• UVA455 Periodic Strings


    问题链接:UVA455 Periodic Strings入门练习题,用C语言编写程序。

    题意:如果一个串可以由长度为k的字符串重复多次连接而得到,则称该串为k周期。本题求一个串的最小周期。

    程序中,封装了一个函数strcmplen()用于比较相同串的两个指定长度的子串,使得主函数的逻辑变得简单。

    另外,输出格式上需要注意。题中有“Two consecutive output are separated by a blank line.”,需要小心处理。

    AC的C语言程序如下:

    /* UVA455 Periodic Strings */
    
    #include <stdio.h>
    #include <string.h>
    
    #define MAXN 80
    
    int strcmplen(char a[], int s, int t, int len)
    {
        int i;
    
        for(i=1; i<=len; i++) {
            if(a[s] != a[t])
                return a[s] - a[t];
    
            s++;
            t++;
        }
    
        return 0;
    }
    
    int main(void)
    {
        int n, len, i, j;
        char s[MAXN+1];
    
        scanf("%d", &n);
        while(n--) {
            scanf("%s", s);
    
            len = strlen(s);
    
            for(i=1; i<len; i++) {
                if(len % i)
                    continue;
    
                for(j=i; j<len; j+=i)
                    if(strcmplen(s, 0, j, i) != 0)
                        break;
    
                if(j == len)
                    break;
            }
    
            printf("%d
    ", i);
            if(n)
                printf("
    ");
        }
    
        return 0;
    }


  • 相关阅读:
    HashMap 和HashTable
    两种方式获得键盘录入
    打印流 printStream
    对象操作流--存储对象
    内存输出流
    序列流
    装饰设计模式
    递归
    IO流(使用指定的码表读写字符)
    IO-字符流 练习
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564523.html
Copyright © 2020-2023  润新知