记住KMP是多计算一位的。其中next[i]为不为自身的最大首尾重复子串长度。

       位移j=i-next[i]可以看作是构成字符串s的字串(如果i%j==0,存在这样的构成),相应的重复次数也就是n/d。

         a  b  c  d  *

next:-1 0  0  0 0   这时j=i-next[i];  结果是j==i;于是得到i/j=1.

         a  b  c  a  *

next:-1 0  0  0 1  这时j=i-next[i]; 结果是i%j!=0.但是结果还是1。所以这题要考虑如果i%j!=0时也要输出1.即自身。这只是字串等于自身的一种情况。上面的那种情况也是一种

#include <iostream>#include <fstream>#include <string.h>

using namespace std;

#define N 1000001int next[N];

void get_next(char *s){int i=0,j=-1,len=strlen(s);    next[i]=j;while(i<len)    {while(j>=0 && s[i]!=s[j]) j=next[j];        i++; j++;        next[i]=j;    }}

int main(){char str[N];int i,j;    freopen("acm.txt","r",stdin);while(scanf("%s",str)!=EOF && str[0]!='.')    {            get_next(str);            i=strlen(str);            j=i-next[i];if(i%j==0)                printf("%d\n",i/j);else                printf("1\n");    }    return 0;}

转载于:https://www.cnblogs.com/Jason-Damon/archive/2012/04/04/2431819.html

poj 2406 还是KMP的简单应用相关推荐

  1. ( KMP 求循环节的个数)Power Strings -- poj -- 2406

    链接: http://poj.org/problem?id=2406 Power Strings Time Limit:3000MS     Memory Limit:65536KB     64bi ...

  2. poj(2406) kmp

    题目链接:https://vjudge.net/problem/POJ-2406 kmp学习:https://blog.csdn.net/starstar1992/article/details/54 ...

  3. POJ 2406 Power Strings (KMP) kmp循环节

    版权声明:本文为博主原创文章,未经博主允许不得转载. Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions ...

  4. 【POJ - 2406】Power Strings (KMP,最小循环节)

    题干: Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc ...

  5. sdut2772 KMP的简单应用

    KMP简单应用 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 给定两个字符串string1和string2,判断string2是 ...

  6. poj 3461 Oulipo (KMP)

    http://poj.org/problem?id=3461 基础KMP, 要注意一次查找完成后,到下一可查找处继续匹配,这样才能保证得到最终个数. code: #include<cstdio& ...

  7. POJ - 3461 (kmp)

    题目链接:http://poj.org/problem?id=3461 Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissio ...

  8. 字符串哈希 - POJ - 2406 字符串的循环周期

    题目链接:http://poj.org/problem?id=2406 题目大意:如果a="123", 那么a^2="123123", a^3=12312312 ...

  9. POJ 1979 Red and Black (简单dfs)

    题目: 简单dfs,没什么好说的 代码: #include <iostream> using namespace std; typedef long long ll; #define IN ...

最新文章

  1. linux rm 提示io异常,Hadoop异常 java.io.IOException: Job status not available
  2. IOS8中SWIFT 弹出框的显示
  3. starGAN原理代码分析
  4. IntelliJ IDEA上操作GitHub
  5. 转载:python pyppeteer手动、离线安装 chromium
  6. redis入门demo
  7. java初学课程_作为java新手应该学习什么课程
  8. 单张表超过30个字段_拉链表
  9. java种子填充_种子填充实例运行出问题
  10. Magento 显示下拉货币 How to add Currency selector to Magento’s header
  11. android 呼吸灯权限_小米新机搭载炫彩呼吸灯酷到爆;三星顶级旗舰Note 10正式官宣...
  12. java系列6:封装
  13. 从零开始学 Java - Spring MVC 实现跨域资源 CORS 请求
  14. c语言蝴蝶图案代码,通达信指标公式,临界点蝴蝶图案出现,暴涨趋势出现(附源码)...
  15. 中国接线端子行业研究与投资前景研究报告(2022版)
  16. 演示面阵激光雷达的工作原理
  17. 云计算技术与应用赛项赛题库
  18. 漫反射与高光反射总结
  19. python基础知识点大全
  20. c语言 /= 和 *= 是什么意思?

热门文章

  1. munin mysql_munin 监控 mysql 2种方法
  2. se是什么职位_女皇大学PSE&SE 独家解析!
  3. hasp 加密 java_加密软件HASP的使用说明
  4. java中unicode显示乱码_Java 已知Java系统编码是GBK,jtextarea从一编码为Unicode的文本中读取数据,出现乱码,怎么正常显示?...
  5. 互联网产品生命周期_我市扎实推进全生命周期公共法律服务产品研发
  6. bert 中文 代码 谷歌_ELECTRA中文预训练模型开源,110个参数,性能媲美BERT
  7. lamp 安装 mysql_linux lamp之离线安装mysql
  8. java htmlparser 使用教程_HTMLParser使用详解(1)
  9. mysql 目录更改 php,Linux下更改MySQL目录
  10. ❤️六W字《计算机基础知识》(五)(建议收藏)❤️