zoukankan      html  css  js  c++  java
  • UVa455 周期串

    题目描述:给一个字符串,找它的重复周期

    思路:

    假设周期从1~N,依次看是否能成为该字符串的重复周期。需要注意:

    1.若周期串没有周期,其重复周期就是本身长度N

    2.假设的周期k如果不能被N整除,自然就不是周期,不必考虑

    3.N长的字符串等分成k长的子部,找每一个k长子部对应位置的字符是否相等即可

    代码:

     1 #include <stdio.h>
     2 #include <string.h>
     3 int main()
     4 {
     5     int N;
     6     char s[100];
     7     scanf("%d", &N);
     8     while(N--){
     9         scanf("%s", s);
    10         int n = strlen(s);
    11         int k, period;
    12         for(k = n ; k > 0; --k){  //遍历寻找周期k 
    13             int flag = 1;
    14             if(n % k != 0)      //不能整除周期自然跳过 
    15                 continue;
    16         /*其实这里有提升空间,直接j = k, ++j, 判s[j] == s[j%k]*/        
    17             int d = n / k;      
    18             for(int i = 0; i < k; ++i){
    19                 for(int j = 0; j < d; ++j){
    20                     if(s[i] != s[i + j * k]) flag = 0;  //出现不满足周期性的地方,标志位置0            
    21             }
    22         }
    23         if(flag) period = k;
    24          
    25         }
    26         if(N > 0)
    27         printf("%d
    
    ", period);
    28         else
    29         printf("%d
    ", period);    
    30     }
    31 }
  • 相关阅读:
    mapreduce框架详解【转载】
    Hadoop的基本命令【转载】
    mininet实验 设置带宽之简单性能测试
    Opendarlight Carbon 安装
    mininet实验 测量路径损耗率
    Controller与Switch建立连接
    OpenFlow协议
    Controller控制器
    进击的SDN
    SDN前瞻 传统网络的缺陷
  • 原文地址:https://www.cnblogs.com/patrolli/p/11171020.html
Copyright © 2011-2022 走看看