http://poj.org/problem?id=3080
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 char s[100][100],s1[100],s2[100]; 6 int main() 7 { 8 int t,m,j,h; 9 scanf("%d",&t); 10 while(t--) 11 { 12 scanf("%d",&m); 13 s2[0]='\0'; 14 bool flag=false; 15 for(int i=0; i<m; i++) 16 { 17 scanf("%s",s[i]); 18 } 19 for(j=0; j<60; j++) 20 { 21 int len=2; 22 while(j+len<60) 23 { 24 int c=0; 25 for(int i=j; i<=j+len; i++) 26 { 27 s1[c++]=s[0][i]; 28 } 29 s1[c]='\0'; 30 for(h=1; h<m; h++) 31 { 32 if(strstr(s[h],s1)==NULL) 33 break; 34 } 35 if(h==m) 36 { 37 if(strlen(s2)==strlen(s1)) 38 { 39 if(strcmp(s2,s1)>0) 40 { 41 flag=true; 42 strcpy(s2,s1); 43 } 44 } 45 else if(strlen(s1)>strlen(s2)) 46 { 47 flag=true; 48 strcpy(s2,s1); 49 } 50 } 51 len++; 52 } 53 } 54 if(flag) printf("%s\n",s2); 55 else printf("no significant commonalities\n"); 56 } 57 return 0; 58 }