标签:
题意:给定一个字符串,让你求出他最多由几个相同的连续子串连接而成。
和上一篇(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