首页 > 代码库 > BZOJ 1355 Baltic2009 Radio Transmission KMP算法
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]); }
BZOJ 1355 Baltic2009 Radio Transmission KMP算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。