题意 寻找最长公共子串(正序逆序皆可)
应用string.h头文件里的strstr函数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
char a[101][105];
int n;
scanf("%d",&n);
int k;
int maxn=0;
int minn=0x3f3f3f3f;
for(int i=0;i<n;i++)
{
scanf("%s",a[i]);
int y=strlen(a[i]);
if(y<minn)
{
minn=y;
k=i;
}
}
char s1[107],s2[102];
int x=strlen(a[k]);
for(int i=0;i<x;i++)
{
for(int j=i;j<x;j++)
{
for(int h=i;h<=j;h++)
{
s1[h-i]=s2[j-h]=a[k][h];
}
s1[j-i+1]=s2[j-i+1]='\0';
int flag=1;
for(int h=0;h<n;h++)
{
if(!strstr(a[h],s1)&&!strstr(a[h],s2))
{
flag=0;
break;
}
}
if(flag&&j-i+1>maxn)
{
maxn=j-i+1;
}
}
}
printf("%d\n",maxn);
}
}