这道题如果把测试数据做得强大的话,估计很难有人做好。但是数据比较小,蛮力法即可解决。郁闷的是,敲的时候忽略了一个“=”号
,白白浪费了几次submit.
poj3080代码:
#include<string>
#include<iostream>
#include<fstream>
using namespace std;
#define NotFound 4294967295
string data[10];
int m;
//const int NUM=60;
int solve()
{
int NUM=data[0].length();
string output="";
for(int i=3;i<=NUM;i++)
{
bool flag=false;
for(int j=0;j+i<=NUM;j++)
{
string sub_str=data[0].substr(j,i);
int k;
for( k=1;k<m;k++)
{
if(data[k].find(sub_str)==NotFound)
break;
}
if(k==m)
{
if(i>output.length())
{
output=sub_str;
flag=true;
}
else if(output>sub_str)
{
output=sub_str;
flag=true;
}
}
}
if(flag)
;
else
break;
}
if(output=="")
cout<<"no significant commonalities"<<endl;
else
cout<<output<<endl;
}
int main()
{
freopen("input.txt","r",stdin);
int n;
cin>>n;
while(n--)
{
cin>>m;
for(int i=0;i<m;i++)
{
cin>>data[i];
}
solve();
}
return 0;
}