题目链接:http://poj.org/problem?id=3080
这个题目是瞎搞搞出来的,也就是枚举呗,这个题目很容易看出来是暴力,就那么点数据,所以直接暴力
暴力的时候可以直接用串函数,也可以自己写
开始我一直wa不知道为什么,后来直接删掉重写就OK 了
最近几天简单题不想写(不过这个题目也是简单题),难题不想想,休息一天^_^
#include <iostream>
#include <string.h>
#include <iostream>
#include <stdio.h>
using namespace std;
char str[100][100];
char ans[100],rec[100];
char now[100];
int main()
{
int t,n,i,j,k,len;
scanf("%d",&t);
while(t--)
{
len=-1;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",str[i]);
for(i=0;i<=60;i++)
for(j=i+3;j<=60;j++)
{
strncpy(now,str[0]+i,j-i);
now[j-i]=0;
for(k=1;k<n;k++)
{
if(!strstr(str[k],now))
break;
}
if(k==n && j-i>len)
{
strncpy(ans,str[0]+i,j-i);
ans[j-i]=0;
len=j-i;
}
else if(k==n && j-i==len)
{
strncpy(rec,str[0]+i,j-i);
rec[j-i]=0;
if(strcmp(ans,rec)>0)
strcpy(ans,rec);
}
}
if(len<3)
printf("no significant commonalities\n");
else
{
printf("%s\n",ans);
}
}
return 0;
}