#include <iostream> using namespace std; #define MAX 400005 char p[MAX]; int next[MAX],len; void getNext() { int j,k; next[0]=-1; j=0; k=-1; while(j<len) { if(k==-1||p[k]==p[j]) { k++; j++; next[j]=k; } else k=next[k]; } } int main() { int a[MAX],i; while(scanf("%s",p)!=EOF) { i=0; len=strlen(p); getNext(); int k=next[len];//k==0biaoshizhiyoubenshenfuhe while(k) { a[i++]=k; k=next[k]; } for(i=i-1;i>=0;i--) { cout<<a[i]<<" "; } cout<<len<<" "; cout<<endl; } return 0; }
poj2752 Seek the Name, Seek the Fame
最新推荐文章于 2020-04-18 19:40:15 发布