Problem Description

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

Input

输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。

Output

输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。

Sample Input

abcde a3
aaaaaa  aa
#

Sample Output

0
3

思路:KMP 模版题,求文本串中模式串出现的次数,需要注意的是,重复字符无法使用,每次匹配成功需要初始化模式串位置

Source Program

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define PI acos(-1.0)
#define E 1e-9
#define INF 0x3f3f3f3f
#define LL long long
const int MOD=20091226;
const int N=1000001;
const int dx[]= {-1,1,0,0};
const int dy[]= {0,0,-1,1};
using namespace std;int Next[N];
char str1[N],str2[N];
void getNext(char p[]){Next[0]=-1;int len=strlen(p);int j=0;int k=-1;while(j<len){if(k==-1||p[j]==p[k]) {k++;j++;Next[j]=k;}else{k=Next[k];}}
}
int KMP(char t[],char p[]) {int tLen=strlen(t);int pLen=strlen(p);getNext(p);int res=0;int j=0;for (int i=0;i<tLen;i++){while(j&&p[j]!=t[i]){j=Next[j];}if(p[j]==t[i]){j++;}if(j==pLen){res++;j=0;//字符不能重复使用,初始化模式串位置}}return res;
}int main(){while(scanf("%s",str1)){if(str1[0]=='#')break;getchar();scanf("%s",str2);memset(Next,0,sizeof(Next));printf("%d\n",KMP(str1,str2));}return 0;
}

剪花布条(HDU-2087)相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 【HDU】2087 剪花布条 (KMP算法的应用)

    可以参考:从头彻尾彻底理解KMP 可以用朴素的模式匹配算法,也可以使用KMP算法,KMP算法所用的时间较短 普通版 #include <iostream> #include <str ...

  7. hdu2087 剪花布条 暴力/KMP

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

  8. 《剪花布条》:从花布条中尽可能剪出几块小饰条

    目录 一.题目 二.思路 1.代码中要使用的String类中的方法 (1)判断 s 中是否有 t (2)将 s 分割 2.递归判断 三.代码 详细注释版本 简化注释版本 一.题目 题目:剪花布条    ...

  9. 剪花布条(HDU 2087)

    [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher C - 剪花布条 题目: Description 一块花布条,里面有些图案,另有一块直接可用的小饰条, ...

  10. HDU 2087 剪花布条 KMP入门

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

最新文章

  1. C++ 泛型编程 -- 函数模版
  2. Java取当前时间,深夜思考
  3. Android中使用DOM解析xml时出现org.xml.sax.SAXParseException: Unexpected token
  4. Shell(9)——sed(1)
  5. Comet OJ(Contest #8)-C符文能量【dp】
  6. junit:junit_JUnit和Hamcrest:在assertEquals上进行改进
  7. “约见”面试官系列之常见面试题之第六十五篇之ajax如何解析jsonp(建议收藏)
  8. android+动画悬浮窗口,悬浮窗能实现自定Animation动画效果吗?
  9. 凑算式——第七届蓝桥杯C语言B组(省赛)第三题
  10. Android 8(1),腾讯字节爱奇艺网易华为实习面试汇总
  11. 企企通SRM:时尚服装品牌企业建立优质供应链体系,只需要做到这几步
  12. 联想启天电脑教室黑屏硬盘保护系统EDU8.0.2.19修复手记
  13. 九月亲测可运营【付费视频奖励计划赞助视频付费计划】最新版本的视频奖励源代码带有订阅可扣除金额带有代理新UI ...
  14. 三层交换机VLAN路由技术
  15. 美通企业日报 | 英特尔与阿里云签署战略合作备忘录;赛默飞在苏州扩建临床试验工厂...
  16. 在线演绎3D图表如何操作
  17. CentOS7安装PHP开发环境1-源码安装Nginx
  18. 7-5 球的表面积和体积 (10 分)
  19. 在 Create-React-App 中使用 TypeScript(汉化)
  20. EWSTM8系列教程06_工程节点选项配置(一)

热门文章

  1. 重磅!阿里宣布成立芯片公司,“平头哥”能解决中国的“无芯之痛”吗?
  2. 关于Python的一切:2018年,你读这8本书就够了
  3. STM32之RCC原理
  4. python生成簇_使用Python复现SIGKDD2017的PAMAE算法(并行kmedoids算法)
  5. 技术人员,该如何向业务和产品“砍需求”?
  6. 凭实力搞砸公司重大项目,老板看到直呼内行
  7. 爱奇艺数据中台建设组合拳:日志投递、统一数仓、大数据平台
  8. jeewx-qywx-api 1.0版发布,微信企业号Java SDK
  9. JEECG - 基于代码生成器的J2EE智能开发框架 续四: 查询条件SQL生成器设计思路
  10. Dreamweaver 格式化代码