背景:wa两次因为空行问题····· 审题有很大的问题特别是格式方面
学习:本题的关键在于字符串的各种顺序,与例题3-6类似,借鉴过来,需要将字符串形象的往左移遍历各种顺序,直到找到一种排序与原字符串完全相同则此为最小周期。
还有就是格式问题··· 题目中指出两个output之间需要空行,意味着最后一个output不要空行。
#include<stdio.h>
#include<string.h>
char s[85];
int per(char a[],int p)
{
int i,j;
int n=strlen(a);
int flag=1; //表示是否这种顺序的字符串与原字符串完全相等
for(i=0;i<n;i++)
{
if(a[i]!=a[(i+p)%n]) //如果没有每个位置对应相等则此顺序不为周期 (注意掌握这种表示方法a[(i+p)%n])
{
flag=0;
return 0;
}
}
if(flag==1) //若相等则返还该周期数
return p;
}
int main ()
{
int t;
scanf("%d",&t);
while (t--)
{
scanf("%s",s);
int i;
int n=strlen(s);
int p;
for(i=1;i<=n;i++)
{
p=per(s,i);
if(p!=0)
break; //如果一旦出现有周期就退出 就一定是最小周期
}
if(t!=0)
printf("%d\n\n",p);
else
printf("%d\n",p);
}
return 0;
}