这道题估计数据比较水,爆搜就能过
从这道题了解到strstr在随机数据的时候比kmp快。。。。正所谓KMP是一种很好的思想,但不实用
接下来就是了解了一些c里的库函数,一开始找不到求子串的函数,写完后才找到strncpy这个函数可以求子串
还有一点要注意的就是得到第一个结果的时候本来可以直接跳出的,但直接跳出的时候可能会碰到一些特殊数据,所以还是用个max记录最大的长度吧。。(这里WA了好多次)
#include<stdio.h>
#include<algorithm>
#include<string>
#include<string.h>
using namespace std;
char s[105][105];
int main(){
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
int T,n;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
int min=0;
for(int i=0;i<n;i++) {
scanf("%s",s[i]);
if(strlen(s[i])<strlen(s[min])) {
min=i;
}
}
char s1[105];
char s2[105];
int max=0;
for(int i=strlen(s[min]);i>=1;i--){//长度
int flag=1;
for(int j=0;j<strlen(s[min])-i+1;j++){//起始位置
int k,l;
for(k=j,l=0;k<i+j;k++) s2[l++]=s[min][k];
s2[l]='\0';
strcpy(s1,s2);//正
reverse(s2,s2+i);//反
flag=1;
for(k=0;k<n;k++){
if(k==min) continue;
if(strstr(s[k],s1)==NULL&&(strstr(s[k],s2)==NULL)) {
flag=0;
break;
}
}
if(flag==1&&max<i) {
max=i;
break;
}
}
}
printf("%d\n",max);
}
return 0;
}