POJ 1961 2406 (KMP,最小循环节,循环周期)
2014-02-12 21:48
330 查看
关于KMP的最短循环节、循环周期,请戳:
/article/6436985.html (KMP模板,最小循环节)
POJ 2406 Power Strings
题意:
给一个字符串,问这个字符串是否能由另一个字符串重复R次得到,求R的最大值。
View Code
/article/6436985.html (KMP模板,最小循环节)
POJ 2406 Power Strings
题意:
给一个字符串,问这个字符串是否能由另一个字符串重复R次得到,求R的最大值。
#include <iostream> #include <stdio.h> #include <string.h> /* 给你一个字符串,对于它长度为i的前缀(i=2~n),给出对应的循环周期k,即前缀可由某个字符串拼接k次得到(k>1) 2406的加强版 */ using namespace std; const int maxn=1000005; int next[maxn]; char str[maxn]; int n; void getnext(char*str,int len){ next[0]=-1; int i=0,j=-1; while(i<len){ if(j==-1||str[i]==str[j]){ i++;j++; next[i]=j; } else j=next[j]; } } int main() { int cases=0; while(scanf("%d",&n),n){ scanf("%s",str); getnext(str,n); printf("Test case #%d\n",++cases); for(int i=2;i<=n;i++){ int l=i-next[i]; if(i%l==0 && i/l>1){ printf("%d %d\n",i,i/l); } } printf("\n"); } return 0; }
View Code
相关文章推荐
- LA 3026 && POJ 1961 Period (利用kmp中的next数组找最小的循环节 )
- Period POJ - 1961(kmp求最大周期,最小循环节)
- POJ-2406-kmp求最小循环节
- poj 2406 Power Strings(kmp的nxt数组找最小循环节)
- poj1961--Period(KMP求最小循环节)
- poj2406--Power Strings(KMP求最小循环节)
- POJ 2406 Power Strings(KMP+最小循环节)
- POJ 2406 Power Strings KMP 求最小循环节
- 【poj 2406】 Power Strings 【KMP 求最小循环节】
- poj 2406 Power Strings (KMP+最小循环节)
- POJ 1961 Period——kmp求最小循环节
- POJ 1961 Period KMP 最小循环节
- 【KMP求最小循环节】POJ2406 Power Strings
- POJ 2406 最小循环节 KMP裸题
- poj 1961 Period (KMP+最小循环节)
- 【kmp+最小循环节】poj 2406 Power Strings
- poj 2406 最小循环节kmp
- POJ 2406 Power Strings(KMP求最小循环节)
- HDU 1358 && HDU 3746 && POJ 2406 最小循环节 (KMP)
- KMP 求最小循环节 POJ - 1961 Period