习题3-4 UVa455 Periodic Strings

来源:互联网 发布:fifa online3数据库cc 编辑:程序博客网 时间:2024/06/04 19:46

要点;
1.输入的字符串一点可以整除最小周期数
2.第一周期与第二周期所对应的字符相等

源代码:

#include<stdio.h>#include<string.h>int main(){    char s[105];    int len, i,j,t;    scanf("%d", &t);    while (t--)    {        scanf("%s", s);        n = strlen(s);        for (i = 1; i <= len; i++) //i作为周期数的范围,i从1到n中寻找最小周期数            if (len %i == 0)   //先判断是否能整除i,减小运算量            {                for (j = i; j < len; j++)  //如果第一周期与第二周期所对应的数不相等,break跳出循环,i++                    if (s[j] != s[j%i])                        break;                if (j ==len)     //如果完全相等,j将等于len,这时输出i的值即为最小周期数                {                    printf("%d\n", i);                    if(t) printf("\n");    // 题目要求答案隔行输出                    break;     //用break跳出循环,达到最小这一隐含条件                }            }    }    return 0;}

学习心得:
1.利用break跳出循环,
*若有多个循环,break只能跳出最近的那个
(最后一步也可尝试直接用return 0;跳出—-不行,while会没意义,只能输出一个,此处不能用)

0 0
原创粉丝点击