您的位置:首页 > 其它

hdu1358 Period(kmp周期)

2015-08-31 12:13 471 查看
题目链接:点击打开链接

题意描述:给一个字符串,求这个字符串中每个前缀自身是否有周期性?

解题思路:kmp即可

代码:

#include <cstdio>
#include <cstring>
#define MAXN 1000010
using namespace std;
void getNext(char* str,int len,int* next){
int i,j;
j=next[0]=-1;
i=0;
while(i<len){
while(j!=-1&&str[i]!=str[j]) j=next[j];
++i,++j;
next[i]=j;
}
}
char st[MAXN];
int next[MAXN];
int main(){
int t=0,n;
while(++t){
scanf("%d",&n);
if(!n) break;
scanf("%s",st);
getNext(st,n,next);
printf("Test case #%d\n",t);
for(int i=2;i<=n;i++){
if((i%(i-next[i])==0)&&(i/(i-next[i])>1))
printf("%d %d\n",i,i/(i-next[i]));
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: