POJ

来源:互联网 发布:淘宝二手手机可信吗 编辑:程序博客网 时间:2024/06/05 00:25

题目大意:

和之前有一篇差不多,就不叙述了,上一篇从策略正确性的证明到kmp代码都写了,可以去看一下。
地址:http://blog.csdn.net/qq_36306833/article/details/71513923

代码:

#include<iostream>#include<stdio.h>#include<string.h>#define maxn 1000500using namespace std; int n;int my_next[maxn];char c[maxn];void get_next(){    int i=0;int j=-1;my_next[0]=-1;    while(i<n)    {        if(j!=-1&&c[j]!=c[i])        {            j=my_next[j];            continue;        }        j++;i++;        my_next[i]=j;    }}int main(){    int test=0;    while(scanf("%d",&n)!=EOF)    {        if(n==0)break;        test++;        scanf("%s",c);        get_next();        printf("Test case #%d\n",test);        for(int i=2;i<=n;i++)        {            if(i%(i-my_next[i])==0&&i/(i-my_next[i])!=1)            {                printf("%d %d\n",i,i/(i-my_next[i]));            }        }        printf("\n");    }}
0 0
原创粉丝点击