字符串水题,暴力无压力过。据说还有各种高端解法。。
深夜做题,有些细节没留神wa了好几次。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
int main()
{
int T,m,i,j,ans,k,lts;
char str[12][100],ts[120],tar[120];
scanf("%d",&T);
getchar();
while (T--)
{
scanf("%d",&m);
getchar();
for (i=0; i<m; i++)
scanf("%s",str[i]);
ans=0;
for (i=0; str[0][i]; i++)
{
for (j=i+1; str[0][j]; j++)
{
for (k=i,lts=0; k<=j; k++,lts++)
{
ts[lts]=str[0][k];
}
ts[lts]='\0';
for (k=1; k<m; k++)
{
if (strstr(str[k],ts) == NULL)
break;
}
if (ans < lts && k == m)
{
ans=lts;
strcpy(tar,ts);
}
else if (ans == lts && k == m)
{
if (strcmp(tar,ts) > 0)
{
strcpy(tar,ts);
}
}
}
}
if (ans >= 3)
{
printf("%s\n",tar);
}
else
{
printf("no significant commonalities\n");
}
}
}