【HDU2087】KMP
KMP算法其实很好理解,就是在匹配串中找最近的相同的串。
下面是HDU的2087:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#define maxn 1005
using namespace std;
string s1,s2;
int f[maxn],ans;
void kmp(string &x,string &y)
{
int le=x.size(),j=,ll=y.size();
for (int i=;i<le;i++)
{
while (j&&x[i]!=y[j])
j=f[j];
if (x[i]==y[j]) j++;
if (j==ll) {
ans++;//j=0;
}
}
}
void find(string &x)
{
int ll=x.size(),j=;
f[]=;f[]=;
for (int i=;i<ll;i++)//从第二个点开始
{
j=f[j];
while (j&&x[j]!=x[i]) j=f[j];
f[i+]= x[j]==x[i] ? j+ : ;
}
}
int main()
{
//freopen("2087kmp.in","r",stdin);
while (cin>>s1&&s1[]!='#')//cin不读空格
{
cin>>s2;
memset(f,,sizeof (f));
ans=;
find(s2);
kmp(s1,s2);
cout<<ans<<endl;
}
return ;
}
【HDU2087】KMP的更多相关文章
- 洛谷P3375 - 【模板】KMP字符串匹配
原题链接 Description 模板题啦~ Code //[模板]KMP字符串匹配 #include <cstdio> #include <cstring> int cons ...
- Luogu 3375 【模板】KMP字符串匹配(KMP算法)
Luogu 3375 [模板]KMP字符串匹配(KMP算法) Description 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来 ...
- P3375 【模板】KMP字符串匹配
P3375 [模板]KMP字符串匹配 https://www.luogu.org/problemnew/show/P3375 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在 ...
- 洛谷—— P3375 【模板】KMP字符串匹配
P3375 [模板]KMP字符串匹配 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next. (如 ...
- 【字符串】KMP
Algorithm Task 给定一个文本串 \(S\) 和一个模式串 \(T\),求 \(T\) 在 \(S\) 中出现的所有位置. Limitations 要求时空复杂度均为线性. Solutio ...
- 【转】KMP算法
转载请注明来源,并包含相关链接.http://www.cnblogs.com/yjiyjige/p/3263858.html 网上有很多讲解KMP算法的博客,我就不浪费时间再写一份了.直接推荐一个当初 ...
- 【string】KMP, 扩展KMP,trie,SA,ACAM,SAM,最小表示法
[KMP] 学习KMP,我们先要知道KMP是干什么的. KMP?KMPLAYER?看**? 正如AC自动机,KMP为什么要叫KMP是因为它是由三个人共同研究得到的- .- 啊跑题了. KMP就是给出一 ...
- 【转载】KMP入门级别算法详解--终于解决了(next数组详解)
[转载]https://blog.csdn.net/LEE18254290736/article/details/77278769 对于正常的字符串模式匹配,主串长度为m,子串为n,时间复杂度会到达O ...
- 【模式匹配】KMP算法的来龙去脉
1. 引言 字符串匹配是极为常见的一种模式匹配.简单地说,就是判断主串\(T\)中是否出现该模式串\(P\),即\(P\)为\(T\)的子串.特别地,定义主串为\(T[0 \dots n-1]\),模 ...
随机推荐
- (三)主控板生级uboot与内核
一.升级uboot 把我的电脑增加一个192.168.1.3的ip,方便升级boot. 1.连接串口,连接网口到GE1; 2.登陆电脑后到D:\MTG3000MAIN\first目录打开tftp32 ...
- C10K及C100K问题探讨 & 怎么应对大流量大并发
首先开宗明义,离开业务单独讨论并发,都是扯淡. 就像 https://www.zhihu.com/question/20493166/answer/15998053 这里面说的 谈并发必然要谈业务,空 ...
- Android布局_表格布局TableLayout
一.TableLayout概述 TableLayout表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象 二.TableLayout的全局属性 1 ...
- gcj_2016_Round1_B
题目 一个NxN的矩阵,矩阵中每个方格中都有一个数值,且每一行的数值严格单调递增,每一列的数值严格单调递增.分别取出N行和N列,形成2N个长度为N的数组,现在有一个数组丢失,已知剩下的2N-1个长度为 ...
- Hbase之必要时取出请求的行(列族所有数据)
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.CellScanner; import org. ...
- python剑指网络篇一
#coding:utf-8 __author__ = 'similarface' #!/usr/bin/env python import socket #二进制和ASCII互转及其它进制转换 fro ...
- C++ Primer 笔记(1)基础中的战斗机 输入输出 对输入不定数据处理
今天打算再重新好好的看一遍C++ Primer这本很经典的书籍,笔记开始: 1.每个C++程序都包含一个或者多个函数,其中必须有一个main,操作系统通过调用main入手运行程序: 2.函数包括:返回 ...
- Dorado7 4版本升级5版本问题汇总
1.4版本中使用@Bind #dataType1.onInsert没问题,使用@Bind @dataType1.onInsert也没问题,5版本中前者不会触发
- Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程
原文地址:https://docs.asp.net/en/latest/data/ef-mvc/intro.html The Contoso University sample web applica ...
- Linux环境下JDK/Eclipse一键安装脚本
-------------------------------------------------------------------- author:jiangxin Email:jiangxinn ...