剪花布条 【HDU - 2087】【KMP模板题】

2023-11-04

KMP教学链接,不懂的可以在线问


题意:

2个字符串A,B.问A中有多少个字符串B.

Input

输入中含有一些数据,分别是成对出现A,B
A和B不会超过1000个字符。
如果遇见#字符,则表示测试结束。
 

Output

输出B的个数,每个结果之间应换行。


KMP模板题:
 

#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int maxN=1e3+5;
char a[maxN], b[maxN];
int nex[maxN];
void cal_next(int len)
{
    nex[0]=-1;
    int k = -1;
    for(int i=1; i<len; i++)
    {
        while(k>-1 && nex[k+1]!=b[i])
        {
            k = nex[k];
        }
        if(nex[k+1] == b[i]) k++;
        nex[i]=k;
    }
}
int KMP(int sa, int ea, int len)
{
    int k = -1;
    for(int i=sa; i<ea; i++)
    {
        while(k>-1 && a[i]!=b[k+1])
        {
            k = nex[k];
        }
        if(b[k+1] == a[i]) k++;
        if(k == len-1) return i-len+1;
    }
    return -1;
}
int main()
{
    while(scanf("%s %s", a, b)!=EOF)
    {
        if(a[0]=='#') break;
        int lena=(int)strlen(a), lenb=(int)strlen(b);
        cal_next(lenb);
        int tmp=0, now=0, ans=0;
        while(lena-now>=lenb && (tmp=KMP(now, lena, lenb))!=-1 )
        {
            ans++;
            now = tmp + lenb;
        }
        printf("%d\n", ans);
        getchar();
    }
    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

剪花布条 【HDU - 2087】【KMP模板题】 的相关文章

  • 串的模式识别和kmp算法

    串的简单模式匹配 与 KMP 获取next数组 参考书籍 王道 数据结构 代码验证软件 xff1a vs2019 include lt iostream gt typedef char SString 暴力比对 S abcabaaabaab
  • JAVA代码实现字符串匹配(一)——BF、KMP

    话不多说 xff0c 直接进入主题 xff1a 题目描述 xff1a 给定两个字符串text和pattern xff0c 请你在text字符串中找出pattern字符串出现的第一个位置 xff08 下标从0开始 xff09 xff0c 如果
  • 从头到尾彻底理解KMP(2014年8月22日版)

    从头到尾彻底理解KMP 作者 xff1a July 时间 xff1a 最初写于2011年12月 xff0c 2014年7月21日晚10点 全部删除重写成此文 xff0c 随后的半个多月不断反复改进 后收录于新书 编程之法 xff1a 面试和
  • ZJM 与纸条(KMP算法)

    问题描述 ZJM 的女朋友是一个书法家 xff0c 喜欢写一些好看的英文书法 有一天 ZJM 拿到了她写的纸条 xff0c 纸条上的字暗示了 ZJM 的女朋友 想给 ZJM 送生日礼物 ZJM 想知道自己收到的礼物是不是就是她送的 xff0
  • [week15] C - ZJM与纸条(选做)—— KMP算法

    文章目录 题意InputOutput输入样例输出样例提示 分析总结代码 题意 ZJM 的女朋友是一个书法家 xff0c 喜欢写一些好看的英文书法 有一天 ZJM 拿到了她写的纸条 xff0c 纸条上的字暗示了 ZJM 的女朋友 想给 ZJM
  • 【Week15作业 C】ZJM与纸条【KMP】

    题意 xff1a ZJM 的女朋友是一个书法家 xff0c 喜欢写一些好看的英文书法 有一天 ZJM 拿到了她写的纸条 xff0c 纸条上的字暗示了 ZJM 的女朋友 想给 ZJM 送生日礼物 ZJM 想知道自己收到的礼物是不是就是她送的
  • Cyclic Nacklace 【HDU - 3746】【KMP补周期】

    KMP算法的讲解 自己的领悟可随时提问 题目链接 题意 有一个字符序列 现在问你 序列后面最少补充几个元素使其恰能成为几个重复循环的序列 题目还是很良心的 让我们求字符串后面放几个字符可以使其变成周期字符串 所以还是可以想到用KMP的nex
  • 超详细超全超好理解的KMP算法

    定义 KMP算法是一种字符串匹配算法 用于在一个主串中查找一个模式串的出现位置 先看这个视频 再看下边的代码实现 油管阿三哥讲KMP查找算法 中英文字幕 人工翻译 简单易懂 https www bilibili com video BV18
  • 剪花布条 【HDU - 2087】【KMP模板题】

    KMP教学链接 不懂的可以在线问 题意 2个字符串A B 问A中有多少个字符串B Input 输入中含有一些数据 分别是成对出现A B A和B不会超过1000个字符 如果遇见 字符 则表示测试结束 Output 输出B的个数 每个结果之间应
  • KMP算法之基础思想篇

    KMP算法是快速求字符串P 是不是字符串S的子串的一个算法 具体案例呢 可以看力扣的28题 实现 strStr 题意也很简单 就是找出P在S中出现的第一个位置 实际上就是找子串 这种最简单的方法就是暴力 直接两层for循环 O n m 的复
  • 使用共享 MVI 架构实现高效的 Kotlin Multiplatform Mobile (KMM) 开发

    使用共享 MVI 架构实现高效的 Kotlin Multiplatform Mobile KMM 开发 文章中探讨了 Google 提供的应用架构指南在多平台上的实现 通过共享视图模型 View Models 和共享 UI 状态 UI St
  • 求字符串可匹配的最大长度

    如 text abcdlijkfgd query abcdefg 最大匹配为 abcd 为4 编写一个函数 求字符串可匹配的最大长度 如果是完全匹配 则用很多种方法 如BF KMP sunday等字符串匹配算法 KMP是比较常见的 其思想也
  • kmp算法(最简单最直观的理解,看完包会)

    本文将以特殊的方式来让人们更好地理解kmp算法 不包括kmp算法的推导 接下来 我们将从朴素算法出发 在这之前 我们先设主串为S 模式串为T 我们要解决的询问是主串中是否包含模式串 即T是否为S的子串 版权声明 本文为原创文章 转载请标明出
  • LeetCode 1967. 作为子字符串出现在单词中的字符串数目(BM、KMP)

    给你一个字符串数组 patterns 和一个字符串 word 统计 patterns 中有多少个字符串是 word 的子字符串 返回字符串数目 子字符串 是字符串中的一个连续字符序列 示例 1 输入 patterns a abc bc d
  • BF,KMP,BM三种字符串匹配算法性能比较

    三种最基本的字符串匹配算法是BF KMP以及BM BF算法是最简单直接的匹配算法 就是逐个比较 一旦匹配不上 就往后移动一位 继续比较 所以比较次数很都 关于KMP和BM的详细介绍可以参考下面的两个link 是讲得比较好的 KMP http
  • Oulipo

    点击打开链接 Problem Description The French author Georges Perec 1936 1982 once wrote a book La disparition without the letter
  • Period 【HDU - 1358】【KMP求周期】

    学习KMP算法可以参阅这篇文章 不懂的可以在线回答 题目链接 题意 我们想知道一串字符中的前缀中有多少最大周期数 例如 aaa 中 前两个 aa 最小周期长度为 a 所以周期长度为2 前三个 aaa 的最小周期也是 a 所以周期长度为3 再
  • Count the string【KMP】

    It is well known that AekdyCoin is good at string problems as well as number theory problems When given a string s we ca
  • SDUTOJ KMP简单应用 【KMP】

    KMP简单应用 Time Limit 1000MS Memory limit 65536K 题目描述 给定两个字符串string1和string2 判断string2是否为string1的子串 输入 输入包含多组数据 每组测试数据包含两行
  • 数据结构与算法学习总结(六)——字符串的模式匹配算法

    基本概念 字符串是一种特殊的线性表 即元素都是 字符 的线性表 字符是组成字符串的基本单位 字符的取值依赖于字符集 例如二进制的字符集为0 1 则取值只能为 0 1 再比如英语语言 则包括26个字母外加标点符号 例如 abcde 就是一个字

随机推荐

  • 《数据挖掘基础》习题一

    7 数据 data 信息 information 和知识 knowledge 是人们认识和利用数据的三个不同阶段 数据挖掘技术是如何把它们有机的结合在一起的 数据是形成知识的源泉 不断的利用知识来获得信息 具体表现如下 客观世界 收集 数据
  • C++程序在debug模式下遇到Run-Time Check Failure #0 - The value of ESP was not properly saved across a functio...

    今天遇到一个Access Violation的crash 只看crash call stack没有找到更多的线索 于是在debug模式下又跑了一遍 遇到了如下的一个debug的错误提示框 这个是什么原因呢 我们来看一个简单的例子来重现这个错
  • 4.Nginx缓存设置和CDN

    文章目录 Nginx缓存设置 设置缓存 取消不需要内容的缓存 查看nginx缓存数据 CDN 概念 工作原理 Nginx缓存设置 设置缓存 在yum配置文件中添加nginx在线源 vim etc yum repos d nginx repo
  • python的日志记录(自带logging模块和优雅的Loguru第三方模块)

    logging模块简介 logging模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统 logging模块是Python的一个标准库模块 由标准库模块提供日志记录API的关键好处是所有Python模块都可以使用这个日志记录
  • tensorflow(10)--自制数据集

    前面讲了怎么用tensorflow识别一些常用的数据集 但是吧 大部分时候 我们都需要识别自己的数据集 比如你有一万张猫狗图片 这时候就需要把本地的那些照片作为数据集传到网络结构中进行处理 这些自己的图片 叫做自制数据集 这篇文章 咱们用本
  • 【操作系统基础】临界区问题 和 和原子操作的理解 和 互斥锁的实现和理解

    文章目录 临界区问题 进程进入临界区协议 临界区的管理准则 喂金鱼案例理解临界区问题 互斥锁 原子操作 原子操作 test and set 的实现 lock 锁的实现 忙式等待 临界区问题 每个并发的进程都有一个代码段 被叫做临界区 这个代
  • 模块化import导入 报错Uncaught SyntaxError: Cannot use import statement outside a module

    我们在给js模块化导入的时候 有时候会报错 Uncaught SyntaxError Cannot use import statement outside a module 错误信息 错误分析 HTML 网页中 浏览器通过 script
  • js生成json数组

    var datas var data data id 1 data name test 1 data age 1 2 datas push data var jsonString JSON stringify datas id 1 name
  • csdn如何设置目录

    如何生成如下图片效果 如下教程所示
  • 一个页面多触发事件需要共用一个接口处理数据,封装回调函数方法回调处理数据

    事件共用方法 queryData code data callback let params code code 根据实际情况传入参数 data data 根据实际情况传入参数 传入借口参数 this axios url 接口url地址
  • 嘉立创PCB板免费打样

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 打样前准备 二 打样步骤 三 优惠券领取 总结 前言 提示 这里可以添加本文要记录的大概内容 友友们 你们肯定也和我有同样的经历 学会了使用嘉立创 或Al
  • 如何进行组件的封装,核心的思想是什么

    1 抽象组件通用逻辑 在开发组件时 我们需要考虑到未来的可维护性和复用性 这时就需要抽象出通用的逻辑或者功能 以便在不同的项目中使用 举个例子 我们可以编写一个图片轮播组件并抽象出自动轮播和手动轮播两种方式 以便在以后的项目中直接引用该组件
  • 第三届长安杯电子取证大赛总结---检材一

    感受 长安杯倾向于考察服务器的取证和网站的重构 第二次参加长安杯 相比第一次的懵逼这一次已经能出很多题目了 取证还是得多刷题 多总结归纳方法 赛事背景 2021年4月25日 上午8点左右 警方接到被害人金某报案 声称自己被敲诈数万元 经询问
  • 服务器尚未完成维护梦幻西游,5月31日维护:可使用点卡直接兑换精力!

    核心提示 2016儿童节活动 2016年5月31日12 00至6月5日12 00 亲爱的玩家朋友 为保证服务器的运行稳定和服务质量 梦幻西游 所有服务器将于2016年5月31日上午8 00停机 进行每周例行的维护工作 预计维护时间为上午8
  • 如何避开DLL load failed,安装pywin32

    啥 成功安装pywin32还是会报DLL load failed 点解啊 我是这样子解决的 这也不知道适不适用除了我之外的帅哥靓女 总之 遇到这问题就放手试试吧 反正你也没有别的办法 1 conda env list 2 conda act
  • [office]修改office2019安装位置,自定义安装需要的功能

    更新 2019 8 24 解决出现 The product can t be install ont the selection update channel 无法安装的问题 2019 5 30 楼主本人本次重装系统后装office2019
  • Loadrunner通过验证码并实现成功登录的方法

    需要安装的软件 1 安装ImageMagick安装完成后 将其安装路径添加到环境变量path中 2 安装Tesseract OCR define MAX NAME LEN 4 定义验证码字符串的长度 这里是4位 int flen 定义一个整
  • 华为OD机试 - 翻牌求最大分(Java)

    题目描述 给出n个牌数 在 100到100之间 求最大得分 规则如下 连续翻牌 如果选当前牌 则总得分等于上一次翻牌总得分加上当前牌的数字 如果当前总得分小于它前三次的总得分的话 那此次不翻牌 并且总得分就等于它前三次的得分 1到3次翻牌数
  • Shiro权限框架-Realm缓存机制(6)

    1 Realm缓存机制意义 在上面我们自定了自己的realm 但是我们发现 在认证和授权的时候 程序需要频繁的访问数据库 这样对于数据库的压力可想而知 那我们怎么处理呢 2 Realm缓存机制实现思路 1 缓存机制图解 2 原理分析 此时我
  • 剪花布条 【HDU - 2087】【KMP模板题】

    KMP教学链接 不懂的可以在线问 题意 2个字符串A B 问A中有多少个字符串B Input 输入中含有一些数据 分别是成对出现A B A和B不会超过1000个字符 如果遇见 字符 则表示测试结束 Output 输出B的个数 每个结果之间应