最长公共后缀。暴力。
#include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<stack> #include<queue> #include<string> #include<algorithm> using namespace std; char s[200][300]; int len[200]; int n; int main() { memset(s,0,sizeof s); scanf("%d",&n); getchar(); for(int i=1; i<=n; i++) gets(s[i]); for(int i=1; i<=n; i++) len[i]=strlen(s[i]); for(int i=1; i<=n; i++) { for(int j=0; j<len[i]/2; j++) swap(s[i][j],s[i][len[i]-j-1]); } bool fail=0; for(int j=0;s[1][j]; j++) { for(int i=2; i<=n; i++) if(s[i][j]!=s[i-1][j]) fail=1; if(fail==1) { if(j==0) printf("nai "); else { for(int k=j-1; k>=0; k--) printf("%c",s[1][k]); printf(" "); } break; } } if(fail==0) { for(int k=len[1]-1; k>=0; k--) printf("%c",s[1][k]); printf(" "); } return 0; }