首页 > 学院 > 开发设计 > 正文

poj1961

2019-11-10 18:25:37
字体:
来源:转载
供稿:网友

题目大意:

对于有N个字符的字符串S的前缀,我们想知道前缀是否是一个周期串。 输入一个字符串,输出截止到i个字符为止,前缀重复K次

解题思路:

KMP算法

代码如下:

#include<stdio.h>#define N 1000010char s[N];int nextval[N];int len;void getnext(const char *s){ int i=0,j=-1; nextval[0]=-1; while(i!=len) { if(j==-1||s[i]==s[j]) nextval[++i]=++j; else j=nextval[j]; } }int main(){ int T=1; int length,add; int i; while(scanf("%d",&len)&&len) { scanf("%s",s); getnext(s); PRintf("Test case #%d/n",T++); for(i=1;i<=len;++i) { length=i-nextval[i]; if(i!=length&&i%length==0) printf("%d %d/n",i,i/length); } printf("/n"); } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表