您的位置:首页 > 其它

poj 2406 Power Strings(KMP轮回串)

2013-07-31 22:29 363 查看
挺直白的一道考KMP轮回串的题目,打完代码,测试了各种数据没有问题,提交wa。怎么想都想不明白,然后看discuss里面别人的代码,遇到“.“要直接跳出。

最后一行这个”.“藏得也太深了……

#include<stdio.h>
#include<string.h>
#define N 1000005
char s
;
int next
;
int ln;
void setNext(char *s)
{
int i,j;
j=-1;i=0;
next[i]=j;
while(i<ln)
{
if(j==-1||s[i]==s[j])
{
i++;
j++;
next[i]=j;
}
else
j=next[j];
}
return ;
}
int main()
{
while(gets(s))
{
if(strcmp(s,".")==0)
break;
if(strcmp(s,"")==0)
{
printf("0\n");
continue;
}
int min;
ln=strlen(s);
setNext(s);
min=ln-next[ln];
if(ln%min==0&&ln!=min)
printf("%d\n",ln/min);
else
printf("1\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: