这个题很容易,直接以第一个字符串为母串,枚举其中的子串查找其他串里是否存在,0MS水过。
直接暴力枚举,贴代码:
#include <stdio.h>
#include <string.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,flat,i,j,k,r,len;
char s[12][62],an[62],s1[62];
an[0]='\0';
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%s",&s[i]);
}
len=3;
while(len!=61)
{
for(i=0; i<=60-len; i++)
{
for(j=0; j<len; j++)
{
s1[j]=s[0][i+j];
}
s1[len]='\0';
for(j=1; j<n; j++)
{
flat=1;
for(k=0; k<=60-len; k++)
{
if(s[j][k]==s1[0])
{
for(r=1; r<len; r++)
{
if(s[j][k+r]!=s1[r])
{
break;
}
}
if(r==len)
{
flat=0;
break;
}
}
}
if(flat)
{
break;
}
}
if(flat==0)
{
if(strlen(an)==strlen(s1)&&strcmp(s1,an)<0)
{
strcpy(an,s1);
}
else if(strlen(an)<strlen(s1))
{
strcpy(an,s1);
}
}
}
len++;
}
if(strlen(an)>=3)
{
printf("%s\n",an);
}
else
{
printf("no significant commonalities\n");
}
}
return 0;
}