poj 2752

来源:互联网 发布:侧田 情歌 知乎 编辑:程序博客网 时间:2024/06/08 08:08
#include<stdio.h>#include<string.h>char s[400005];int next[400005],sta[400005],all;void get_next(){    int len=strlen(s+1),i=1,j;    next[1]=j=0;    while(i<=len)    {        if(j==0||s[i]==s[j]) next[++i]=++j;        else j=next[j];    }}void solve(){    int len=strlen(s+1),i;    all=0,sta[all++]=len;    for(i=len;i>1;)    {        if(next[i+1]>1) sta[all++]=next[i+1]-1;        i=next[i+1]-1;    }}void print(){    int i;    for(i=all-1;i>0;i--) printf("%d ",sta[i]);    printf("%d\n",sta[i]);}int main(){    while(scanf("%s",&s[1])>0)    {        get_next();        solve();        print();    }    return 0;}

0 0
原创粉丝点击