zoukankan      html  css  js  c++  java
  • 例题3-4 周期串

    UVA - 455
    Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu

    Description


     
     Periodic Strings 

    A character string is said to have period k if it can be formed by concatenating one or more repetitions of another string of length k. For example, the string "abcabcabcabc" has period 3, since it is formed by 4 repetitions of the string "abc". It also has periods 6 (two repetitions of "abcabc") and 12 (one repetition of "abcabcabcabc").

    Write a program to read a character string and determine its smallest period.

    Input

    The first line oif the input file will contain a single integer N indicating how many test case that your program will test followed by a blank line. Each test case will contain a single character string of up to 80 non-blank characters. Two consecutive input will separated by a blank line.

    Output

    An integer denoting the smallest period of the input string for each input. Two consecutive output are separated by a blank line.

    Sample Input

    1
    
    HoHoHo

    Sample Output

    2

    写一下感想吧

    实际上这个题是十分简单的  因为数据比较小所以 我们开始从1 假设  该周期    现在 假设该周期 为     i       字符串的长度 为       l       最外面的 一层循环代表的  用 i为变量  里面的 再来一层循环  分别  按照周期为 i 进行对整个字符串的比较   按照固定的距离 进行 一个个单词的对比    如果只是这样的话 那么就有麻烦了     例如  输入的是   aba   这时候  程序判定循环的周期是   2  很明显 因为 b  没有 对照   周期是一定可以  整除  字符串长度的 所以 设置  一个 关卡 就是   必须让周期可以整除  字符串长度       当整除字符串  长度的时候     就鞥做到每个单词一一进行比较的  效果了  . 

     1  #include<stdio.h>
     2  #include<string.h>
     3  int main()
     4  {
     5      char a[100];
     6      int i,j,m,n,l;
     7      scanf("%d",&n);
     8      while(n)
     9      {
    10          scanf("%s",a);    //一会 试试  gets   这样的话 还能避免万一有空格的陷阱
    11          l=strlen(a);
    12          for(i=1;i<=l;i++)      //  i 代表 最小循环节
    13          {
    14              if(l%i!=0)
    15                 continue;
    16              for(j=0;j+i<l;j++)
    17              {
    18                  if(a[j]!=a[j+i])
    19                     break;
    20              }
    21              if(j+i==l)
    22              {
    23                  printf("%d
    ",i);
    24                 if(n!=1)
    25                     printf("
    ");
    26                  break;
    27              }
    28          }
    29          n--;
    30      }
    31  }
  • 相关阅读:
    Math类的用法
    c#中和java中可变参数对比
    c#中泛型集合directory和java中map集合对比
    C#调用短信接口(通过简单的工厂模式整合多个短信平台)
    C#用网易邮箱发送邮件(同步异步)
    新浪云-PHP实现上传原图,缩略图
    PHP 继承,组合,单模式,GUID,等混合实例
    ASP.Net MVC @Html类
    ASP.net MVC 无法初始化 ASP.NET Simple Membership 数据库
    PHP 单列模式实例讲解以及参考网址
  • 原文地址:https://www.cnblogs.com/A-FM/p/5217705.html
Copyright © 2011-2022 走看看