复习KMP
KMP刚学的时候,看不懂。
再看,哇!原来是这样!
用的时候,忘了。
为了不再跌倒,我决定,记住吧。。。
在我看来,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的更多相关文章
- HDU_1711_初识KMP算法
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- bzoj4974 字符串大师
4974: 字符串大师 Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 310 Solved: 155[Submit][Status][Discuss] ...
- 【POJ3461】Oulipo
题面 The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter ...
- 【[HNOI2008]GT考试】
我又来复习\(kmp\)了 其实这道题主要是一个矩阵乘法,但是\(kmp\)在其中也有着非常重要的作用 我们可以这样定义状态\(dp[i][j]\)表示文本串进行到了\(i\)位置,同时文本串在最后和 ...
- 【Wannafly挑战赛9-B】数一数
链接:https://www.nowcoder.net/acm/contest/71/B 题目就不贴了.. 设res[i]为第i行的最终结果,可以想到,res[i]为0或不为0.长度不是最短的字符串r ...
- NOIP2018 - 暑期博客整理
暑假写的一些博客复习一遍.顺便再写一遍或者以现在的角度补充一点东西. 盛暑七月 初涉基环外向树dp&&bzoj1040: [ZJOI2008]骑士 比较经典的基环外向树dp.可以借鉴的 ...
- [C++] 习题 2.18 倒序查找字串
目录 前置技能 字符串 KMP 算法 需求描述 概要设计 具体实现 string.cpp strmatching.cpp main.cpp 倒序查找字串: 设计一个算法,在串 str 中查找字串 su ...
- 满血复活前的记录(持续更新ing)
时隔一年重新开启算法竞赛征程. 该记录大多为老课件.已经做过的习题重做和已经看过的书本重看 7.21 下午到山大 娄晨耀basic_algorithm课件中的内容: 复习线性筛原理 复习差分 做完Co ...
- python编写学习助手0
项目原因 为了解决学习知识后不及时复习而导致遗忘的问题,准备写一个桌面助手,采用艾宾浩斯记忆法,对每次学习的内容排布复习计划. 第一步是做出最简单的文本列表,里面是待办事项,每个复习待办事项都会有符合 ...
随机推荐
- Oracle的case 用法
1.测试表declare @stuinfo table(id int, sname nvarchar(20), ///小组名称 gender varchar(1), //小组性别 sgroup int ...
- 【249】◀▶IEW-Unit14
Unit 14 Money and Finance 线图写作技巧 1.Model1对应图片分析 The graph contains information about the price in US ...
- nodejs链接mysql
使用mysql连接池:1.安装mysql支持npm install mysql 2.安装node.js的mysqlpool模块npm install -g node-mysql //-g表全局 3.直 ...
- CF-839B
B. Game of the Rows time limit per test 1 second memory limit per test 256 megabytes input standard ...
- SynEdit(Delphi XE7)的安装和基本使用
一.花絮 delphi自带的memo显示sql语句看的太累人了,今天决定美化一下.最起码要有“语法着色”.“显示行号”这2个功能. 意外发现了 SynEdit 控件. SynEdit是一个免费的文字编 ...
- pyjsonrpc模块使用
pyjsonrpc模块的远程过程调用方法. # -*- coding:utf-8 -*- #!/usr/bin/env python2.7 # @Author : tianbao # @Contact ...
- c程序实现unicode字符转utf-8字符
下面是一个unicode字符转换为utf-8的c程序实现: /* * ================================================================= ...
- yzm10的ACM集训小感
7月30号,ACM集训进行了两周,一切都已on the right way.这时的我适时地从题海中探出头,其实除了刷题,也该写点什么来总结下过去.首先,在第一周里,我学习了数据结构,知道了STL这么一 ...
- 无监督学习:Linear Dimension Reduction(线性降维)
一 Unsupervised Learning 把Unsupervised Learning分为两大类: 化繁为简:有很多种input,进行抽象化处理,只有input没有output 无中生有:随机给 ...
- 多版本Shader与multi_compile
多版本Shader与multi_compile https://docs.unity3d.com/Manual/SL-MultipleProgramVariants.html #pragma ...