http://acm.hdu.edu.cn/showproblem.php?pid=1238
#include<iostream>
#include<stdio.h>
#include<string>
#include<algorithm>
using namespace std;
int cmp(string a,string b)
{
return a.size()<b.size();
}
int main()
{
string st[110],sa,sb;
int t,n,i,m,j,k;
int max;
scanf("%d",&t);
while(t--)
{
max=0;
scanf("%d",&n);
for(i=0;i<n;i++)
cin>>st[i];
sort(st,st+n,cmp);
int flag;
for(i=0;i<st[0].size();i++)
{
flag=1;
int is=0;
for(j=st[0].size()-i;j>=1;j--)
{
sb=sa=st[0].substr(i,j);
reverse(sb.begin(),sb.end());
// cout<<"dd="<<sa<<" "<<sb<<endl;
for(k=1;k<n;k++)
{
if(st[k].find(sa)>st[k].size()&&st[k].find(sb)>st[k].size())
{
//cout<<st[k]<<endl;
break;
}
}
if(k==n)
{
if(j>max)
max=j;//printf("j=%d i=%d\n",j,i);
}
}
}
printf("%d\n",max);
}
}
这里用到了几个c++的函数。平时要注意灵活运用。