首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

poj2752 串所有的前后缀

2013-03-19 
poj2752 求一个串所有的前后缀题意:给定一个串,求出该串的所有前后缀的长度(包括该串本身)。/*感觉这道题就

poj2752 求一个串所有的前后缀

   题意:给定一个串,求出该串的所有前后缀的长度(包括该串本身)。

/*感觉这道题就是求next数组的逆过程,但首先还是要求一遍next数组,得到最后一个元素的next值,然后再从最后一个元素开始根据next值往前推,直到next值等于0为止*/#include<stdio.h>#define N 400010char s[N];int next[N],len;void getnext(){    int i,j;    next[0]=0;    for(i=1,j=0;s[i];i++)    {        while(j>0&&s[i]!=s[j])            j=next[j-1];        if(s[i]==s[j])            j++;        next[i]=j;    }    len=i;}void show(int i)//递归输出结果{    if(next[i]==0)        return;    show(next[i]-1);    printf("%d ",next[i]);}int main(){    while(~scanf("%s",s))    {        getnext();        show(len-1);        printf("%d\n",len);    }    return 0;}


 

热点排行