原题链接:http://poj.org/problem?id=2752
分析:no!
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define maxn 400005 5 using namespace std; 6 char s[maxn]; 7 int len,next[maxn],ans[maxn]; 8 void get_next() 9 { 10 int i=0,j=-1;len=strlen(s); 11 next[0]=-1; 12 while(i<len){ 13 if(j==-1||s[i]==s[j]){ 14 i++;j++; 15 next[i]=j; 16 } 17 else j=next[j]; 18 } 19 } 20 int main() 21 { 22 while(gets(s)) 23 { 24 get_next(); 25 int num=0,j=len; 26 while(j){ 27 ans[num++]=j; 28 j=next[j]; 29 } 30 for(j=num-1;j>=1;j--) 31 printf("%d ",ans[j]); 32 printf("%d ",ans[0]); 33 } 34 return 0; 35 }