Seek the Name, Seek the Fame POJ
阿新 • • 發佈:2018-12-15
題意:
給你一個字串str 找到一個字串集合S ,集合內的字串都為str的字首和字尾
思路:
如果這個字串s在這個集合的話,那麼s肯定是字串str的一個匹配(⊙﹏⊙)能理解我意思吧
So KMP模板
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<algorithm> #define INF 0x3f3f3f3f using namespace std; const int maxn=1010000; int ans[maxn],net[maxn]; char str[maxn]; void GetNextval(char *str,int *net) { net[0]=-1; int j=0,k=-1,len; len=strlen(str); while(j<len) { if(k==-1||str[j]==str[k]) net[++j]=++k; else k=net[k]; } } int main() { int top; while(~scanf("%s",str)) { int len=strlen(str); top=0; int k=len; GetNextval(str,net); while(k) { ans[top++]=k; k=net[k]; } for(int i=top-1;~i;--i) printf("%d ",ans[i]); printf("\n"); } }