POJ--2752

原题链接: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 }
View Code
原文地址:https://www.cnblogs.com/i-love-acm/p/3247235.html