您的位置:首页 > 其它

uva455 periodic strings

2016-07-29 17:08 239 查看
   刚开始思路是一个一个慢慢找,遇到和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;
else
l=l+l;
}
if((l+length)>strlen(a)-1)
break;
else
j++;
}
if(strlen(a)%length!=0)
printf("%d\n",strlen(a));
else
printf("%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);
}
}
}   结果是对的,超时了是什么鬼?
  


  宝宝不开心。

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

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva 455 刘汝佳