POJ2406传送门

题目意思:

比如给出一个字符串,让你找出它是由多少个相同子串组成的,输出该子串的最大个数

比如abababab,它是由子串ab重复4次组成的,输出4

abcd它是由子串abcd重复1次组成的,输出1

注:我所用的next数组下标都是从1开始的,字符串数组也是从1开始读取的

i 1 2 3 4 5 6 7 8 9
字符 a b a b a b a b  
next[i] 0 1 1 2 3 4 5 6 7

所以答案就是8/(9-7)=4

ac代码:

#include <iostream>
#include <cstring>
#define maxn 1000005
using namespace std;
char s[maxn];
int len;
int nnext[maxn];
void getnext()
{nnext[1]=0;int j=1,k=0;while(j<=len){if(k==0||s[j]==s[k]){k++;j++;nnext[j]=k;}else k=nnext[k];}
}
int main()
{while(scanf("%s",s+1)!=EOF&& s[1]!='.'){if(s[1]=='.') break;int ans=0;len=strlen(s+1);getnext();ans=len/(len+1-nnext[len+1]);if(len%(len+1-nnext[len+1])==0)printf("%d\n",ans);else puts("1");}return 0;
}

有一个小细节需要注意下,while的条件中要写成&& s[1]!='.'    注意中间要有一个空格

或者写成

   while(scanf("%s",s+1)!=EOF){if(s[1]=='.') break;

如果写成

while(scanf("%s",s+1)!=EOF&&s[1]!='.')

那么遇到.就不会结束while

POJ 2406题解kmp算法的应用相关推荐

  1. poj 2406 还是KMP的简单应用

    记住KMP是多计算一位的.其中next[i]为不为自身的最大首尾重复子串长度.        位移j=i-next[i]可以看作是构成字符串s的字串(如果i%j==0,存在这样的构成),相应的重复次数 ...

  2. 字符串匹配经典题目——KMP算法(Leetcode题解-Python语言)

    28. 实现 strStr() strStr(haystack: str, needle: str) 的作用就是在 haystack 字符串(长度为 n)中找出 needle 字符串(长度为 m)出现 ...

  3. poj 4468Spy(kmp算法)

    Spy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  4. KMP算法详解P3375 【模板】KMP字符串匹配题解

    KMP算法详解: KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt(雾)提出的. 对于字符串匹配问题(such as 问你在abababb中有多少个 ...

  5. POJ 3461 Oulipo(kmp算法解析)

    题目链接:https://cn.vjudge.net/contest/320014#problem/F Sample Input 3 BAPC BAPC AZA AZAZAZA VERDI AVERD ...

  6. KMP算法详解及各种应用

    KMP算法详解: KMP算法之所以叫做KMP算法是因为这个算法是由三个人共同提出来的,就取三个人名字的首字母作为该算法的名字.其实KMP算法与BF算法的区别就在于KMP算法巧妙的消除了指针i的回溯问题 ...

  7. 算法笔记--KMP算法 EXKMP算法

    1.KMP算法 这个博客写的不错:http://www.cnblogs.com/SYCstudio/p/7194315.html 模板: next数组的求解,那个循环本质就是如果相同前后缀不能加上该位 ...

  8. 0x15.基本数据结构 — 字符串 (KMP算法(含详细证明)和最小表示法)

    目录 一.KMP模式匹配 1.引理: 2.引理证明: 3.使用优化的算法计算nextnextnext数组: 4.luogu P3375 [模板]KMP字符串匹配 5.UVA1328 Period 6. ...

  9. POJ3461 Oulipo ——KMP算法——Pku3461

    建议大家学一学比较巧妙的KMP算法吧,很有意思.推荐个题目:POJ3167 Cow Patterns 题解我会发在本博里. 这个KMP就木有什么好说的了吧,大家找百度百科学一下就可以了~ CODE P ...

  10. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

最新文章

  1. pytorch 与 numpy 的数组广播机制
  2. java中服务器瘫痪怎么办,跑的好好的 Java 进程,怎么突然就瘫痪了
  3. 字符串多模式精确匹配(脏字/敏感词汇搜索算法)——TTMP算法 之理论(转)...
  4. Leecode20. 有效的括号——Leecode大厂热题100道系列
  5. JS ===和==区别
  6. 即时大数据流处理=即时风暴
  7. ASP.NET 安全认证(四)
  8. 吉大计算机学院刘淑芬,刘淑芬-吉林大学计算机科学与技术学院
  9. [Ajax] jQuery中的Ajax -- 03-搜索框提示效果
  10. MFC开发IM-第二十六篇、vs2008添加库文件
  11. IntelliJ IDEA 开启很慢,运行不流畅,大项目卡顿?一招配置解决!
  12. Odoo链接magento纪实
  13. javascript小技巧(转自DooIT)http://www.cnblogs.com/ttyp/archive/2004/11/15/63900.html
  14. 排序算法2:冒泡排序
  15. RS-485接口详解
  16. 网易推理拼图验证码识别
  17. VS2013各版本序列号
  18. App推广及游戏推广,如何才能大规模起量
  19. 一种高效的Polar码冻结比特编译码方法
  20. 第一单元 用python学习微积分(五) 隐函数微分法和逆函数导数(上)- 隐函数微分

热门文章

  1. 点击按钮弹出Outlook(新建邮件状态)
  2. mysql碎片data free_浅析MySQL数据碎片的产生(data free)
  3. 比 CMD 更强大的命令行:WMIC 后渗透利用(系统命令)
  4. 前端封装接口弹出错误_Java:SpringBoot写后端接口,看这一篇就够了
  5. 数据库—并发调度的可串行性
  6. React 中setState更新state何时同步何时异步?
  7. C# MysqlHelper 执行reader时,遇到致命错误或者超时
  8. RecyclerView Widget 使用
  9. Windows 2016 减肥
  10. 语音识别技术突飞猛进 终有一天将超过人