Substrings
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
2 3 ABCD BCDFF BRCD 2 rose orchid
Sample Output
2 2#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string lmx[200];
int main()
{
int t,n,i,j,min,k,flag,x;
cin>>t;
while(t--)
{
cin>>n;
min=200;
flag=0;
for(i=0;i<n;i++)
{
cin>>lmx[i];
if(lmx[i].length()<min) {min=lmx[i].length();flag=i;}
}
int x=0;
for(i=min;i>0;i--)
{
for(k=0;k+i<=min;k++)
{
string s1,s2;
s1=lmx[flag].substr(k,i);
s2=s1;
reverse(s1.begin(),s1.end());
for(j=0;j<n;j++)
{
if(lmx[j].find(s1)==-1&&lmx[j].find(s2)==-1) break;
}
if(j==n) {cout<<s1.length()<<endl;flag=1;break;}
}
if(flag==1) break;
}
if(flag==0) cout<<0<<endl;
}
return 0;
}
为了明天所以选择坚定的执着今天。