BZOJ 1355 Baltic2009 Radio Transmission KMP算法
标题效果:给定一个字符串,求最小周期节(不能整除)
示例Hint这是错误的忽略了就好了 环路部分应该是cab
这个称号充分利用KMP在next自然阵列,那是,n-next[n]它表示一个循环节
POJ这个问题需要分割,这是不能分开的标题,直接输出n-next[n]就可以
注意next数组不要开成char~
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define M 1001001 using namespace std; int n,next[M]; char s[M]; void KMP() { int i,fix=0; for(i=2;s[i];i++) { while( fix && s[fix+1]!=s[i] ) fix=next[fix]; if( s[fix+1]==s[i] ) fix++; next[i]=fix; } } int main() { scanf("%d",&n); scanf("%s",s+1); KMP(); printf("%d\n",n-next[n]); }
版权声明:本文博客原创文章,博客,未经同意,不得转载。