zoukankan      html  css  js  c++  java
  • poj 2406 && 1961

          要说用到KMP算法,觉得也就是用到KMP的一个模板,主要还是用了KMP求出next 之后怎么判断才是关键,这两道题目是一个做法,就是最后输出稍有不同

    poj2406:以前在哈工大那个ACM基础教程上做过这个题目,这次做训练计划又敲了一遍,至于思路,贴个链接吧,就不重复说了http://www.cnblogs.com/fxh19911107/archive/2011/12/02/2271865.html

    poj 1961:http://poj.org/problem?id=1961

    题意:不知道怎么表达,还是拿第二个例子来说吧  

    aabaabaabaab 这 从第一个 到 第二个 a 重复了 2 次,所以输出就是 2 2,到第六个位置时,aab这个子串在 aabaab里重复出现了 2 次,所以输出是 6 2,然后到第九个位置 aab 在aabaabaab里面重复出现了 3 次,所以输出是 9 3 ,然后最后输出的就是 12 4 了
    View Code
     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <iostream>
     4 #include <algorithm>
     5 #define N 1000010
     6 #define _clr(a,val) (memset(a,val,sizeof(a)))
     7 
     8 using namespace std;
     9 
    10 int next[N];
    11 char str[N];
    12 void getnext(int n)
    13 {
    14     int i = 0;
    15     int j = -1;
    16     next[0] = -1;
    17     while(i <= n)
    18     {
    19         if(j == -1 || str[i] == str[j])
    20         {
    21             i++, j++;
    22             next[i] = j;
    23         }
    24         else j = next[j];
    25     }
    26 }
    27 int main()
    28 {
    29     int n,i;
    30     int cs = 0;
    31     //freopen("data.txt","r",stdin);
    32     while(scanf("%d",&n),n)
    33     {
    34         getchar();
    35         cin.getline(str,N);
    36         getnext(n);
    37         printf("Test case #%d\n",++cs);
    38         for(i = 2; i <= n; i++)
    39         {
    40             int tem = i - next[i]; // 重复子串的长度
    41             int kem = i / tem;   // 重复次数
    42             if(i % tem == 0 && kem > 1)  // 如果 现在的长度 % 重复子串长度为零,并且次数大于 1 那么就是可以输出的结果
    43             {
    44                 printf("%d %d\n",i,kem);
    45             }
    46         }
    47         printf("\n");
    48     }
    49     return 0;
    50 }
  • 相关阅读:
    关于slmgr命令
    .msi安装包安装方法(安装错误2503和2502)
    BIOS相关
    C和C#的区别
    关于del命令
    win8快捷键
    Windows 8 系统快捷键热键列表收集
    Android开发环境搭建
    关于Android sdkmanager目录结构的总结
    关于eclipse新建项目问题
  • 原文地址:https://www.cnblogs.com/fxh19911107/p/2624231.html
Copyright © 2011-2022 走看看