标签:
题意:给定一个字符串,让你求出他最多由几个相同的连续子串连接而成。
和上一篇(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;
}标签:
原文地址:http://blog.csdn.net/kalilili/article/details/43867855