uva455 periodic strings

来源:互联网 发布:ubuntu recovery 联网 编辑:程序博客网 时间:2024/06/15 16:30

   刚开始思路是一个一个慢慢找,遇到和a[0]一样的,在比较所有length的倍数,如果全部一样,就是周期。

  但是程序写出来发现了如下错误。形如ababa,abcab,的判断的周期是错误的。

  贴上代码

#include<stdio.h>#include<string.h>int main(){int n,i,j,length,l;char a[85];while(~scanf("%d",&n)){for(i=0;i<n;i++){j=1;scanf("%s",a);while(1){for(;j<strlen(a);j++)if(a[0]==a[j]){length=l=j;break;}if(strlen(a)%length!=0){break;}for(l;l<strlen(a);){if(a[0]!=a[l])break;elsel=l+l;}if((l+length)>strlen(a)-1)break;elsej++;}if(strlen(a)%length!=0)printf("%d\n",strlen(a));elseprintf("%d\n",length);}}}
  在网上找了一下发现他们都是设定周期然后找的大哭,感觉自己代码漏洞太多,干脆推倒重来吧。

  

#include<stdio.h>#include<string.h>int main(){int n,i,j,k,l=1;char a[85];while(~(scanf("%d",&n)==1)){for(i=0;i<n;i++){scanf("%s",a);for(j=1;j<strlen(a);j++){if(strlen(a)%j!=0)    continue;    else    for(k=j;k<strlen(a);)    {    if(a[j]!=a[0])    {    l=0;    break;    }    else    k=k+j;    }    if(l)    break;}printf("%d\n",j);        }}} 
  结果是对的,超时了是什么鬼?

  

  宝宝不开心。

  。。。。。,我还会杀回来的。

  

0 0