KMP刚学的时候,看不懂。

再看,哇!原来是这样!

用的时候,忘了。

为了不再跌倒,我决定,记住吧。。。

在我看来,KMP一般用于字符串匹配时的防超时优化。

他的精髓就是,利用已经匹配的信息,简化这之后的匹配过程。

小试牛刀:P3375 【模板】KMP字符串匹配

#include<iostream>
#include<cstdio>
#include<math.h>
#include<queue>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1e6+;
int net[N];
char s[N],t[N];
void get_net()
{
int i=,j=;
int len=strlen(t+);
for(;i<=len;i++)
{
while(j&&t[j+]!=t[i]) j=net[j];
if(t[j+]==t[i]) j++;
net[i]=j;
}
}
void match()
{
int lens=strlen(s+),lent=strlen(t+);
for(int i=,j=;i<=lens;i++)
{
while(j&&s[i]!=t[j+]) j=net[j];
if(s[i]==t[j+]) j++;
if(j==lent) printf("%d\n",i-lent+);
}
}
int main()
{
cin>>(s+)>>(t+);
get_net();
match();
int lens=strlen(s+),lent=strlen(t+);
for(int i=;i<=lent;i++)
printf("%d ",net[i]); return ;
}

复习KMP的更多相关文章

  1. HDU_1711_初识KMP算法

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. bzoj4974 字符串大师

    4974: 字符串大师 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 310  Solved: 155[Submit][Status][Discuss] ...

  3. 【POJ3461】Oulipo

    题面 The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter ...

  4. 【[HNOI2008]GT考试】

    我又来复习\(kmp\)了 其实这道题主要是一个矩阵乘法,但是\(kmp\)在其中也有着非常重要的作用 我们可以这样定义状态\(dp[i][j]\)表示文本串进行到了\(i\)位置,同时文本串在最后和 ...

  5. 【Wannafly挑战赛9-B】数一数

    链接:https://www.nowcoder.net/acm/contest/71/B 题目就不贴了.. 设res[i]为第i行的最终结果,可以想到,res[i]为0或不为0.长度不是最短的字符串r ...

  6. NOIP2018 - 暑期博客整理

    暑假写的一些博客复习一遍.顺便再写一遍或者以现在的角度补充一点东西. 盛暑七月 初涉基环外向树dp&&bzoj1040: [ZJOI2008]骑士 比较经典的基环外向树dp.可以借鉴的 ...

  7. [C++] 习题 2.18 倒序查找字串

    目录 前置技能 字符串 KMP 算法 需求描述 概要设计 具体实现 string.cpp strmatching.cpp main.cpp 倒序查找字串: 设计一个算法,在串 str 中查找字串 su ...

  8. 满血复活前的记录(持续更新ing)

    时隔一年重新开启算法竞赛征程. 该记录大多为老课件.已经做过的习题重做和已经看过的书本重看 7.21 下午到山大 娄晨耀basic_algorithm课件中的内容: 复习线性筛原理 复习差分 做完Co ...

  9. python编写学习助手0

    项目原因 为了解决学习知识后不及时复习而导致遗忘的问题,准备写一个桌面助手,采用艾宾浩斯记忆法,对每次学习的内容排布复习计划. 第一步是做出最简单的文本列表,里面是待办事项,每个复习待办事项都会有符合 ...

随机推荐

  1. Early Media and Music on Hold

    Early media refers to any media that is played to the initial caller’s phone before the remote party ...

  2. 结合Django+celery二次开发定时周期任务

    需求: 前端时间由于开发新上线一大批系统,上完之后没有配套的报表系统.监控,于是乎开发.测试.产品.运营.业务部.财务等等各个部门就跟那饥渴的饿狼一样需要 各种各样的系统数据满足他们.刚开始一天一个还 ...

  3. unicode和utf-8互转

    1.1 ASCII码 我们知道, 在计算机内部, 所有的信息最终都表示为一个二进制的字符串. 每一个二进制位(bit)有0和1两种状态, 因此八个二进制位就可以组合出 256种状态, 这被称为一个字节 ...

  4. OpenCode:template

    ylbtech-OpenCode: 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   作者:ylbtech出处:http://ylbtec ...

  5. JAVA操作cassandra数据库

    如果是maven项目,在pom.xml里加入依赖.不是的话下载相应的jar包放到lib目录下.这里驱动包的版本要和你cassandra的大版本一致.我这里cassandra的版本是最新的3.9,驱动是 ...

  6. 《SpringBoot揭秘 快速构建微服务体系》读后感(三)

    SpringApplication:SpringBoot程序启动的一站式解决方案 深入探索SpringApplication执行流程 因为书上的版本是1.2的,比较老,这里参考http://blog. ...

  7. 洛谷P1349 广义斐波那契数列(矩阵快速幂)

    P1349 广义斐波那契数列 https://www.luogu.org/problemnew/show/P1349 题目描述 广义的斐波那契数列是指形如an=p*an-1+q*an-2的数列.今给定 ...

  8. JEECMS-新闻内容中遍历批量上传的图片

    [#list content.pictures as p] <li value="${p_index+1}"> <img src="${p.imgPat ...

  9. LaTeX 语法

    MathJax是什么? MathJax是一个开源JavaScript库.它支持LaTeX.MathML.AsciiMath符号,可以运行于所有流行浏览器上. LaTeX是什么? LaTeX(LATEX ...

  10. Animation Starter Pack中动画蓝图事件添加的位置

    可以直接在动画状态机的详情页添加简单事件,跟在动画里添加的通知事件效果一致