http://acm.hdu.edu.cn/showproblem.php?pid=1238
分析:枚举+STL
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
const int NM=105;
string str[NM];
bool comp(string A,string B)
{
if(A.size()<B.size()) return 1;
else return 0;
}
int main()
{
int i,m,len,j,k,flag,ans,T;
string cop,cc1,cc2;
cin>>T;
while(T--)
{
cin>>m;
for(i=0;i<m;i++)
cin>>str[i];
sort(str,str+m,comp);
cop=str[0];
ans=0;
len=cop.size();
for(j=0;j<len;j++)
{
for(k=1;k<=len;k++) //
{
cc1.assign(cop,j,k);
cc2.assign(cop,j,k);
reverse(cc2.begin(),cc2.end());
flag=0;
for(i=1;i<m;i++)
{
if(str[i].find(cc1)!=string::npos)
continue;
else if(str[i].find(cc2)!=string::npos)
continue;
else
{flag=1;break;}
}
if(!flag&&ans<cc1.size())
ans=cc1.size();
}
}
cout<<ans<<endl;
}
return 0;
}