题目大意
求N个字符串的最长公共字串
题解
和POJ1226做法一样。。。注意是字典序最小的。。。WA了一次
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define MAXN 65 char p[MAXN],T[MAXN][MAXN]; int f[MAXN]; void getfail(char *p,int len) { int j; f[0]=j=-1; for(int i=1;i<len;i++) { while(j>=0&&p[j+1]!=p[i]) j=f[j]; if(p[j+1]==p[i]) j++; f[i]=j; } } bool find(char *s,int len,int n) { getfail(s,len); for(int t=0;t<n;t++) { int j=-1,lens=strlen(T[t]); bool flag=false; for(int i=0;i<lens;i++) { while(j>=0&&s[j+1]!=T[t][i]) j=f[j]; if(s[j+1]==T[t][i]) j++; if(j+1==len) { flag=true; break; } } if(!flag) return false; } return true; } int main() { int cases; scanf("%d",&cases); while(cases--) { int n; scanf("%d",&n); char s[MAXN],temp[MAXN]; temp[0]='