poj1226 Substrings (多串最长公共子串+正反)

来源:互联网 发布:mysql常用函数 编辑:程序博客网 时间:2024/06/05 15:04

字符串大暴力。

选出最短的串,暴力枚举每一个子串,正反两个,逐个匹配。



#include<cstdio>#include<cstring>char dic[105][105];char key[105];char z[105],rev[105];int ans;int main(){int t;scanf("%d",&t);while(t--){int n;memset(key,0,sizeof(key));scanf("%d",&n);for(int i=0;i<n;i++){scanf("%s",dic[i]);if(strlen(dic[i])<strlen(key)||strlen(key)==0){strcpy(key,dic[i]);}}int m=strlen(key);ans=0;for(int i=0;i<m;i++){for(int j=i;j<m;j++){for(int k=i,l=0,r=j;k<=j;k++,r--,l++){z[l]=key[k];rev[l]=key[r];}z[j+1-i]='\0';rev[j+1-i]='\0';int cnt=0;for(int k=0;k<n;k++){if(strstr(dic[k],z)||strstr(dic[k],rev)){ cnt++;continue;}break;}if(cnt==n){int len=j+1-i;if(len>ans){ans=len;}}}}printf("%d\n",ans);}return 0;}


0 0