可以参考:从头彻尾彻底理解KMP

可以用朴素的模式匹配算法,也可以使用KMP算法,KMP算法所用的时间较短

普通版

#include <iostream>
#include <string>using namespace std;int main ()
{string s1,s2;while(cin >> s1){if(s1=="#")return 0;cin >> s2;int i=0;int j=0;int cnt=0;while(i<s1.length()){if(s1[i]==s2[j]){i++;j++;}else{i=i-j+1;//将i向后移动一个,继续匹配j=0;}if(j==s2.length()){j=0;cnt++;}}cout << cnt << endl;}return 0;
}

KMP


#include <iostream>
#include <string>
#include <cstring>using namespace std;int nextt[1005];
string s1,s2;
int cnt;void getnext()
{memset(nextt,0,sizeof(nextt));int i=0,j=-1;nextt[0]=-1;while(i<s2.length()){if(j==-1 || s2[j]==s2[i]){i++;j++;nextt[i] = j;}else{j=nextt[j];}}
}void KMP_search()
{int i=0,j=0;while(i<s1.length()){if(j==-1||s1[i]==s2[j]){i++;j++;}else{j=nextt[j];}if(j==s2.length()){j=0;cnt++;}}
}int main()
{while(cin>>s1){if(s1=="#")break;cin >> s2;getnext();cnt=0;KMP_search();cout << cnt << endl;}return 0;
} 

在这里需要注意,在KMP算法匹配成功时,i已经指向匹配成功的下一个字符,而 j 等于模式串的长度(已经指出去了),所以想要继续往后匹配的话,j=0,而不是j=next[j](这样计算的是可重叠的,例如,aaaaaa aa,输出的是5,答案要求是3)。

【HDU】2087 剪花布条 (KMP算法的应用)相关推荐

  1. HDU 2087 剪花布条 KMP入门

    Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条.计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入 ...

  2. HDU 2087剪花布条 KMP

    KMP算法入门题  哥第一次写KMP惭愧啊,惭愧getnext写得蛋痛,后面的KMP部分更蛋痛.改了N久 #include<stdio.h> #include<string.h> ...

  3. Day 33 剪花布条+客似云来

    目录 1.剪花布条 2.客似云来 1.剪花布条 链接:剪花布条__牛客网 来源:牛客网 [编程题]剪花布条 热度指数:1327 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M, ...

  4. (剪花布条、客似云来)笔试强训

    博主简介:想进大厂的打工人 博主主页:@xyk: 所属专栏: JavaEE初阶 两道编程题~~~ 目录 文章目录 一.[编程题]客似云来 二.[编程题]剪花布条 一.[编程题]客似云来 链接:客似云来 ...

  5. 【Java版oj】day33剪花布条、客似云来

    目录 一.剪花布条 (1)原题再现 (2)问题分析 (3)完整代码 二.客似云来 (1)原题再现 (2)问题分析 (3)完整代码 一.剪花布条 (1)原题再现 剪花布条__牛客网         一块 ...

  6. 【HDU - 2087】 剪花布条(直接模拟 or KMP)

    题干: 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input输入中含有一些数据,分别是成对出现的花 ...

  7. 剪花布条(字符串,C++)

    题目描述 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 输入格式 输入数据为多组数据,读取到 # 字符 ...

  8. hdu2087 剪花布条 暴力/KMP

    在字符串中不可重叠地寻找子串数量,暴力/KMP 1 #include<stdio.h> 2 #include<string.h> 3 4 int main(){ 5 char ...

  9. hdu 2087 剪花布条

    http://acm.hdu.edu.cn/showproblem.php?pid=2087 水题,注意细节就可以了. 代码如下: #include<iostream> #include& ...

最新文章

  1. 高级教程: 作出动态决策和 Bi-LSTM CRF 重点
  2. SQLServer之函数简介
  3. 谷歌官方TensorFlow开发者认证来了,吴恩达:学我的课,报名费五折
  4. windows7 64位下安装tensorflow终极解决方案
  5. 【maven3学习之三】maven构建一个简单的Hello World
  6. python 线程超时设置_python 条件变量Condition(36)
  7. Java技术:serialVersionUID作用介绍
  8. rest api封装调用_如何从云功能调用外部REST API
  9. 解决Hbase输入list,创建表报错,输入status可以,org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: S
  10. vue 开发中element-ui库的switch开关绑定number类型数据不成功问题 解决方法
  11. typedef用法总结(一)
  12. 【luogu T34117 打油门】 题解
  13. 如何批量新建文件夹并命名
  14. 适合小孩接触编程起步的几款软件,从游戏中学习编程
  15. 游戏角色设计思路规划路径有哪些?
  16. ECCV 2020 五项大奖出炉!普林斯顿邓嘉获最佳论文奖
  17. u3d学习:helloworld
  18. IMU输出的角度、角速度、加速度信息的坐标系
  19. 如何加密html文件怎么打开,文件加密巧用IE浏览器
  20. 一名大学毕业生的反思(转)

热门文章

  1. matlab 无序数对,MATLAB中sort函数对矩阵数进行排序
  2. java 上传的图片大小为0_JAVA技术:上传图片的缩放处理
  3. 零基础学Java需要做哪些准备
  4. HTML在网页设计中是什么作用?
  5. 安卓x86_Android:虚拟机体验基于安卓10的BlissOS V12.2 Android X86版
  6. 如何打造一流的视觉AI技术
  7. 想要确保架构目标达成?适合度函数了解一下
  8. 使用XHProf分析PHP性能瓶颈(二)
  9. grub2 命令行进入系统
  10. 基于多核DSP处理器DM8168的视频处理方法