HDOJ 1238:Substrings 寻找最长子序列 解题报告
来源:互联网 发布:dll不兼容windows 编辑:程序博客网 时间:2024/06/08 15:19
Substrings
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4177 Accepted Submission(s): 1871
Problem Description
You are given a number of case-sensitive strings of alphabetic characters, find the largest string X, such that either X, or its inverse can be found as a substring of any of the given strings.
Input
The first line of the input file contains a single integer t (1 <= t <= 10), the number of test cases, followed by the input data for each test case. The first line of each test case contains a single integer n (1 <= n <= 100), the number of given strings, followed by n lines, each representing one string of minimum length 1 and maximum length 100. There is no extra white space before and after a string.
Output
There should be one line per test case containing the length of the largest string found.
Sample Input
23ABCDBCDFFBRCD2roseorchid
Sample Output
22
题目简意:寻找给定若干字符串中的最长公共子序列 其中该序列可正序可反序
// HDOJ_1238.cpp : Substrings//求子串:s.substr(position,len);//查找字串:s.find(s1);如果没找到,则返回-1,可用s.find(s1)!=-1来判断是否找到子串//求字符串长度:s.length()//翻转字符串:reverse(s.begin(),s.end())会把s自己本身翻转过来#include "StdAfx.h"#include <fstream>#include <iostream>#include <string>#include <cstring>#include <algorithm>//reverse函数在algorithm中 不过VS有了"StdAfx.h"就不需要它了//sort也在algorithm中 但只有"StdAfx.h"又不行 奇怪using namespace std;int main(){ifstream cin("1238_input.txt");//调试用int t, n, i, j, k;//t=test casescin >> t;while ( t-- ){cin >> n;string *a = new string[n];string *b = new string[n];int minLength = 150;int minIndex;for( i=0; i<n; i++ ){cin >> a[i];b[i] = a[i];reverse(b[i].begin(),b[i].end());//reverse为void类型if( minLength > a[i].length() ){minLength = a[i].length();minIndex = i;}}//cout << minLength << endl;string subString;bool fail;int maxLength=0;for( i=0; i<minLength; i++ )for( j=1; j<=minLength-i; j++ ){fail = 0;subString = a[minIndex].substr(i,j);//cout << subString << endl;for( k=0; k<n; k++ ){if(a[k].find(subString)!=-1 && k==n-1 ){maxLength = max(maxLength, j);//cout << maxLength << endl;}if(a[k].find(subString)==-1){//返回-1表未找到if(b[k].find(subString)==-1 ){fail = 1;break;//从k循环跳出}else if( k==n-1 )maxLength = max(maxLength, j);}}if( fail == 1 )break;}delete []a;delete []b;cout << maxLength << endl;}//while return 0;}
- HDOJ 1238:Substrings 寻找最长子序列 解题报告
- hdu 1238 Substrings (最长相同连续子序列)
- POJ 1458(最长公共子序列 动态规划) 解题报告
- 最长递增子序列——解题报告
- LuoguP2757 导弹的召唤 解题报告【最长上升子序列+最长不上升子序列】
- 寻找最长递增子序列
- 寻找最长递增子序列
- 寻找最长递增子序列
- 寻找最长递增子序列
- [1204 寻找子串位置] 解题报告
- HDOJ_1238 Substrings 解题报告
- Leetcode 647. Palindromic Substrings 回文子串 解题报告
- 动态规划--寻找最长递减子序列
- python实现寻找最长回文子序列
- pku 2533 最长递增子序列 Longest Ordered Subsequence 解题报告
- 最长公共递增子序列O(n^2)模板——ZOJ2432解题报告- -
- 【解题报告】uva10405_Longest Common Subsequence(最长公共子序列, dp)
- 哈理工oj 1116 解题报告 动态规划-依次输出最长公共子序列的位置
- SQL*LOAD经常使用的一些例子
- bat 脚本基本语法
- 背包问题系列教程(1):01背包问题
- Android之Activity的生命周期
- 专注于操作系统5之引导程序代码
- HDOJ 1238:Substrings 寻找最长子序列 解题报告
- 第二周上机任务1-2---编写递归函数将十进制数转换成二进制数输出
- HDOJ 1239:Calling Extraterrestrial Intelligence Again 解题报告
- 内部类实现机制
- 多线程计数器锁存器---CountDownLatch
- Oracle中TO_DATE格式
- 从地址栏输入到页面显示 -深入探究web运行机制
- HDOJ 1010:Tempter of the Bone 迷宫问题 解题报告
- 简单存储过程示例优化。。。多列取最小值