会用c++中的reverse+substr,数据比较小然后直接枚举就好了。。。。。。
#include<bits/stdc++.h>
using namespace std;
int main ()
{
int n,v,t;
string str[105];
cin>>t;
while(t--)
{
cin>>n;
int minn=1000;
for(int i=0;i<n;i++)
{
cin>>str[i];
if(minn>str[i].length())
{
minn=str[i].length();
v=i;
}
}
int maxn=0;
for(int i=0;i<minn;i++)
{
for(int j=0;j<minn-i;j++)
{
string str1,str2;
str1=str[v].substr(i,j+1);
str2=str1;
reverse(str2.begin(),str2.end());
int k;
for(k=0;k<n;k++)
if(str[k].find(str1,0)==-1&&str[k].find(str2,0)==-1)
break;
if(k==n&&maxn<str1.length())
maxn=str1.length();
}
}
cout<<maxn<<"\n";
}
return 0;
}