HUST-1010

来源:互联网 发布:淘宝充值平台官网登录 编辑:程序博客网 时间:2024/06/05 01:57

//这是一道KMP题,核心思想就是求最小循环节点,其求法为:len-next[len];

AC代码:

#include<stdio.h>#include<string.h>#define max 1000005char s[max];int len;int next[max];int sum;void get_next(){    int i=0;    int j=-1;    next[0]=-1;    while(i<len)    {        if(j==-1||s[i]==s[j])        {            i++;            j++;            next[i]=j;        }        else        {            j=next[j];        }    }}int main(){    while(scanf("%s",s)!=EOF)    {        memset(next,0,sizeof(next));        sum=0;        len=strlen(s);        get_next();        printf("%d\n",len-next[len]);    }    return 0;}


0 0
原创粉丝点击