poj 1961 Period (最小重复子串 kmp)
来源:互联网 发布:创世写作 mac 编辑:程序博客网 时间:2024/05/24 07:11
最小覆盖子串长度为n-next[n] ,n为字符串长度。如果恰好覆盖就为n/(n-next[n]),否则为1.
所有前缀的最小重复子串,加一个循环即可。
附上代码喵:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char name[1000010];int nex[1000010];void getnext(){memset(nex,0,sizeof(nex));nex[0]=-1;int j=-1,k=0;int len=strlen(name);while(k<len){if(j==-1||name[j]==name[k]){j++;k++;nex[k]=j;}elsej=nex[j];}}int main(){int n,ica=1;while(scanf("%d",&n),n){scanf("%s",name);printf("Test case #%d\n",ica++);getnext();for(int i=1;i<=n;i++){int len=i-nex[i];if(i%len==0&&i/len>1){printf("%d %d\n",i,i/len);}}printf("\n");}return 0;}
0 0
- poj 1961 Period (最小重复子串 kmp)
- POJ-1961 Period-KMP前缀串重复次数
- poj 1961 Period (KMP+最小循环节)
- POJ 1961 Period KMP 最小循环节
- POJ 1961 Period【KMP最小循环节】
- poj 1961:Period (KMP)
- poj 1961 Period (KMP)
- poj 1961 Period---kmp
- POJ 1961-Period:KMP
- poj 1961 Period KMP
- poj 1961 Period(KMP)
- Period - POJ 1961 KMP
- POJ 1961 Period (KMP)
- POJ Period 1961【KMP】
- POJ 1961 Period kmp
- poj 1961 Period 【KMP】
- POJ-1961(Period)(kmp())
- [poj 1961]Period[kmp]
- Java中String 和StringBuffer的区别
- hibernate4连接mysql自动创建表失败
- javascript事件,自定义事件,基于自定义事件的解耦
- HDOJ过山车
- STM32F10x GPIO_Init() 库函数简化
- poj 1961 Period (最小重复子串 kmp)
- 待我代码编完,娶你可否
- 一道虚函数的选择题
- Strassen矩阵乘法
- struts2 result param
- 改变拖延症?你只需要20秒疯狂的勇气
- 如何利用android访问assets下的文件或文件夹
- CodeForces 400D (最短路+并查集) Dima and Bacteria
- Entity Framework执行Sql语句返回DataTable