剪花布条(HDU-2087)
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)相关推荐
- (剪花布条、客似云来)笔试强训
博主简介:想进大厂的打工人 博主主页:@xyk: 所属专栏: JavaEE初阶 两道编程题~~~ 目录 文章目录 一.[编程题]客似云来 二.[编程题]剪花布条 一.[编程题]客似云来 链接:客似云来 ...
- 【Java版oj】day33剪花布条、客似云来
目录 一.剪花布条 (1)原题再现 (2)问题分析 (3)完整代码 二.客似云来 (1)原题再现 (2)问题分析 (3)完整代码 一.剪花布条 (1)原题再现 剪花布条__牛客网 一块 ...
- Day 33 剪花布条+客似云来
目录 1.剪花布条 2.客似云来 1.剪花布条 链接:剪花布条__牛客网 来源:牛客网 [编程题]剪花布条 热度指数:1327 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M, ...
- 【HDU - 2087】 剪花布条(直接模拟 or KMP)
题干: 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input输入中含有一些数据,分别是成对出现的花 ...
- 剪花布条(字符串,C++)
题目描述 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 输入格式 输入数据为多组数据,读取到 # 字符 ...
- 【HDU】2087 剪花布条 (KMP算法的应用)
可以参考:从头彻尾彻底理解KMP 可以用朴素的模式匹配算法,也可以使用KMP算法,KMP算法所用的时间较短 普通版 #include <iostream> #include <str ...
- hdu2087 剪花布条 暴力/KMP
在字符串中不可重叠地寻找子串数量,暴力/KMP 1 #include<stdio.h> 2 #include<string.h> 3 4 int main(){ 5 char ...
- 《剪花布条》:从花布条中尽可能剪出几块小饰条
目录 一.题目 二.思路 1.代码中要使用的String类中的方法 (1)判断 s 中是否有 t (2)将 s 分割 2.递归判断 三.代码 详细注释版本 简化注释版本 一.题目 题目:剪花布条 ...
- 剪花布条(HDU 2087)
[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher C - 剪花布条 题目: Description 一块花布条,里面有些图案,另有一块直接可用的小饰条, ...
- HDU 2087 剪花布条 KMP入门
Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条.计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入 ...
最新文章
- C++ 泛型编程 -- 函数模版
- Java取当前时间,深夜思考
- Android中使用DOM解析xml时出现org.xml.sax.SAXParseException: Unexpected token
- Shell(9)——sed(1)
- Comet OJ(Contest #8)-C符文能量【dp】
- junit:junit_JUnit和Hamcrest:在assertEquals上进行改进
- “约见”面试官系列之常见面试题之第六十五篇之ajax如何解析jsonp(建议收藏)
- android+动画悬浮窗口,悬浮窗能实现自定Animation动画效果吗?
- 凑算式——第七届蓝桥杯C语言B组(省赛)第三题
- Android 8(1),腾讯字节爱奇艺网易华为实习面试汇总
- 企企通SRM:时尚服装品牌企业建立优质供应链体系,只需要做到这几步
- 联想启天电脑教室黑屏硬盘保护系统EDU8.0.2.19修复手记
- 九月亲测可运营【付费视频奖励计划赞助视频付费计划】最新版本的视频奖励源代码带有订阅可扣除金额带有代理新UI ...
- 三层交换机VLAN路由技术
- 美通企业日报 | 英特尔与阿里云签署战略合作备忘录;赛默飞在苏州扩建临床试验工厂...
- 在线演绎3D图表如何操作
- CentOS7安装PHP开发环境1-源码安装Nginx
- 7-5 球的表面积和体积 (10 分)
- 在 Create-React-App 中使用 TypeScript(汉化)
- EWSTM8系列教程06_工程节点选项配置(一)
热门文章
- 重磅!阿里宣布成立芯片公司,“平头哥”能解决中国的“无芯之痛”吗?
- 关于Python的一切:2018年,你读这8本书就够了
- STM32之RCC原理
- python生成簇_使用Python复现SIGKDD2017的PAMAE算法(并行kmedoids算法)
- 技术人员,该如何向业务和产品“砍需求”?
- 凭实力搞砸公司重大项目,老板看到直呼内行
- 爱奇艺数据中台建设组合拳:日志投递、统一数仓、大数据平台
- jeewx-qywx-api 1.0版发布,微信企业号Java SDK
- JEECG - 基于代码生成器的J2EE智能开发框架 续四: 查询条件SQL生成器设计思路
- Dreamweaver 格式化代码