首页 > 学院 > 开发设计 > 正文

poj 2752

2019-11-08 02:41:25
字体:
来源:转载
供稿:网友
#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;}
上一篇:hdu 2087

下一篇:获取公众号的所有文章

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表