这个题很容易,直接以第一个字符串为母串,枚举其中的子串查找其他串里是否存在,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; }
转载于:https://www.cnblogs.com/lin375691011/p/3996811.html
相关资源:JAVA上百实例源码以及开源项目