码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 2406 Power Strings(KMP)

时间:2015-02-17 21:06:09      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

题意:给定一个字符串,让你求出他最多由几个相同的连续子串连接而成。

和上一篇(POJ 1961 Period)一样,上一题的弱化,不说了

代码(直接套了上一题)

//5060 KB	110 ms	C++
#include<cstdio>
#include<iostream>
#include<cstring>
#define maxn 1000100
using namespace std;
int len;
char str[maxn];
int next[maxn];
void getnext()
{
    next[0]=-1;
    int k=-1;
    int j=0;
    while(j<len) {
        if (k==-1||str[j]==str[k])   {
            k++;
            j++;
            next[j]=k;
        }
        else  k = next[k];
    }
}
int main()
{
    while(scanf("%s",str)){
        len=strlen(str);
        if(len==1&&str[0]=='.') break;
        getnext();
        if(len%(len-next[len])==0) printf("%d\n",len/(len-next[len]));
        else printf("1\n");
    }
    return 0;
}


POJ 2406 Power Strings(KMP)

标签:

原文地址:http://blog.csdn.net/kalilili/article/details/43867855

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!