字符串的题嘛,水的很,STL解决!很方便。ps,npos比跟.size()比好得多,不必考虑边界问题。这代码效率很低,n^3的
#include <iostream>
#include <string>
#define MAXN 60
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
string str[15];
for(int i = 0; i < n; i++)
{
cin >> str[i];
}
string res = "";
for(int i = 3; i <= MAXN; i++)
{
for(int j = 0; j <= MAXN - i; j++)
{
string tmp = str[0].substr(j, i);
bool flag = true;
for(int k = 1; k < n; k++)
{
if(str[k].find(tmp) == string::npos)
{
flag = false;
break;
}
}
if(flag && res.size() < tmp.size())
res = tmp;
else if(flag && tmp.size() == res.size() && tmp < res)
res = tmp;
}
}
if(res == "")
cout <<"no significant commonalities" << endl;
else
cout << res << endl;
}
return 0;
}