poj 2406 KMP 重复子串

来源:互联网 发布:如何自己注册淘宝店铺 编辑:程序博客网 时间:2024/05/17 18:15

没考虑 len%(len-f[len])!=0 的情况,太挫了

#include <iostream>#include <cstdio>#include <vector>#include <cmath>#include <stack>#include <cstring>using namespace std;char str[1000500];int f[1000500];int main (){    while(scanf("%s",str)!=EOF)    {        int len=strlen(str);        if(len==1&&str[0]=='.') break;        /*if(len==1)        {            printf("1\n");            continue;        }*/        f[0]=f[1]=0;        for(int i=1;i<len;++i)        {            int j=f[i];            while(j&&str[j]!=str[i]) j=f[j];            f[i+1]= str[i]==str[j]?j+1:0;        }        printf("%d\n",len%(len-f[len])==0?len/(len-f[len]):1);    }    return 0;}


原创粉丝点击