UVa455 周期串 习题3-4

3-4 「UVa455」周期串:

如果一个字符可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例如:abcabcabcabc 以3为周期(注意:它也以6和12为周期)输入一个长度不超过80的字符串,输出其最小周期。

代码

#include     
#include
#define N 80                                                     //暴力枚举法
int check(int k,int n,char *s)
{
    int result=1,i,j;
    for(i=0;i 
#include
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;
}

*/

你可能感兴趣的:(UVa455 周期串 习题3-4)