#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
#define MAXN 100
vector<string> strs;
int n;
bool find(string sub)
{
for(int i = 0; i < n; i ++)
{
if(string::npos == strs[ i ].find(sub))
{
reverse(sub.begin(), sub.end());
if(string::npos == strs[ i ].find(sub))
{
return false;
}
}
}
return true;
}
bool cmp(string a, string b)
{
return a.size() < b.size();
}
int main()
{
int t;
string str;
cin>>t;
while(t > 0)
{
cin>>n;
strs.clear();
for(int i = 0; i < n; i++)
{
cin>>str;
strs.push_back(str);
}
sort(strs.begin(), strs.end(), cmp);
int len = strs[ 0 ].size();
int maxlen = 0;
for(int i = 0; i < len; i ++)
{
for(int j = 1; j <= len - i; j ++)
{
string sub = strs[ 0 ].substr(i, j);
if(find(sub))
{
if(sub.size() > maxlen)
{
maxlen = sub.size();
}
}
else
{
break;
}
}
}
printf("%d\n", maxlen);
t --;
}
return 0;
}
杭电ACM1238(搜索题)
最新推荐文章于 2015-11-10 21:41:28 发布