poj 2406 KMP应用
2012-01-18 01:59
399 查看
题意:根据题目给出的规则,一个字符串表示成a*n,求最大的n.
思路:KMP的next[]的应用,不是很懂,看了许多别人的代码。其中if(len%(len-next[len])==0)这一句是精华所在,对其理解还不是很到位。索性记住算了。。。
例如:next[6]=3; 对于s1s2s3s4s5s6s7s8s9 如果条件成立的话,意味着s1s2s3=s4s5s6=s7s8s9。转载了一篇写的不错的文章,可以参考下。
思路:KMP的next[]的应用,不是很懂,看了许多别人的代码。其中if(len%(len-next[len])==0)这一句是精华所在,对其理解还不是很到位。索性记住算了。。。
例如:next[6]=3; 对于s1s2s3s4s5s6s7s8s9 如果条件成立的话,意味着s1s2s3=s4s5s6=s7s8s9。转载了一篇写的不错的文章,可以参考下。
#include<iostream> using namespace std; int next[1000010]; char s[1000010]; void get_next() { int j=0,k=-1; next[0]=-1; int len=strlen(s); while(j<len) { if(k==-1||s[k]==s[j]) { next[j+1]=k+1; j++;k++; } else k=next[k]; } } int main() { while(scanf("%s",s)!=EOF&&s[0]!='.') { get_next(); int len=strlen(s); if(len%(len-next[len])==0) printf("%d\n",len/(len-next[len])); else printf("1\n"); } }
相关文章推荐
- POJ 2406 KMP next数组的应用
- poj2406--kmp next的应用
- POJ 2406 KMP next数组的应用
- poj 2406 Power Strings (kmp 中 next 数组的应用||后缀数组)
- POJ 2752、2406、1961 KMP的next[](或p[])简单应用
- POJ_1961 KMP next的典型应用 类似于 poj2406
- POJ_1961 KMP next的典型应用 类似于 poj2406
- poj 2406 Power Strings(kmp应用)
- POJ 2406 Power Strings(KMP的应用)
- poj 2406 Power Strings[kmp,next数组的应用]
- poj 2406 Power Strings 【KMP的应用】
- poj 2406 Power Strings KMP的next数组的应用
- POJ 2406 Power Strings (KMP next数组应用)
- poj-2406 kmp中的next数组应用
- poj 2406 还是KMP的简单应用
- poj 2406 Power Strings(kmp next数组的应用)
- POJ -2406 power strings --KMP中next函数的应用
- POJ 2406 Power Strings 1961的简化版,kmp的next数组的应用
- POJ 2406 kmp简单应用
- POJ 1961/POJ 2406 /POJ 2752 /【KMP应用】