1.链接地址:
http://bailian.openjudge.cn/practice/1226/
http://poj.org/problem?id=1226
2.题目:
总时间限制:
- 1000ms
内存限制:- 65536kB
描述
- 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.
输入- The first line of the input 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.
输出- There should be one line per test case containing the length of the largest string found.
样例输入- 样例输出
23ABCDBCDFFBRCD2roseorchid- 来源
22- Tehran 2002 Preliminery
3.思路:
4.代码:
1 #include2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int NUM = 100; 8 char strs[NUM][NUM + 1]; 9 int main()10 {11 //freopen("F:\\input.txt","r",stdin);12 int i,j,k;13 14 int t;15 cin>>t;16 17 int n,length;18 while(t--)19 {20 cin>>n;21 cin.get();22 23 for(i = 0; i < n; i++)24 {25 scanf("%s",strs[i]);26 }27 28 for(i = 0; i < n; i++)29 30 length = strlen(strs[0]);31 char substr[NUM + 1],substr2[NUM + 1];32 int res = 0;33 for(i = 1; i <= length; i++)34 {35 for(j = 0; (j+i-1) < length; j++)36 {37 strncpy(substr,&strs[0][j],i);38 substr[i] = '\0';39 strcpy(substr2,substr);40 41 for(k = 0; k < (i+1)/2; k++)42 {43 char tmp = substr2[k];44 substr2[k] = substr2[i-1-k];45 substr2[i-1-k] = tmp;46 }47 48 49 //cout<<"substr="< <<",substr2="< < = n ) 55 {56 res = i;57 break;58 }59 }60 }61 62 cout< <