字符串水题,暴力无压力过。据说还有各种高端解法。。
深夜做题,有些细节没留神wa了好几次。
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; int main() { int T,m,i,j,ans,k,lts; char str[12][100],ts[120],tar[120]; scanf("%d",&T); getchar(); while (T--) { scanf("%d",&m); getchar(); for (i=0; i<m; i++) scanf("%s",str[i]); ans=0; for (i=0; str[0][i]; i++) { for (j=i+1; str[0][j]; j++) { for (k=i,lts=0; k<=j; k++,lts++) { ts[lts]=str[0][k]; } ts[lts]='\0'; for (k=1; k<m; k++) { if (strstr(str[k],ts) == NULL) break; } if (ans < lts && k == m) { ans=lts; strcpy(tar,ts); } else if (ans == lts && k == m) { if (strcmp(tar,ts) > 0) { strcpy(tar,ts); } } } } if (ans >= 3) { printf("%s\n",tar); } else { printf("no significant commonalities\n"); } } }