HDU2087 剪花布条
2016-04-22 00:57
316 查看
题目链接:HDU2087
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 14426 Accepted Submission(s): 9119
Problem Description
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?
Input
输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。
Output
输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。
Sample Input
Sample Output
题目分析:同HDU1686题,只不过当模式串匹配完时应该直接返回模式串的头以防止发生重叠的情况。
剪花布条
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14426 Accepted Submission(s): 9119
Problem Description
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?
Input
输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。
Output
输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。
Sample Input
abcde a3 aaaaaa aa #
Sample Output
0 3
题目分析:同HDU1686题,只不过当模式串匹配完时应该直接返回模式串的头以防止发生重叠的情况。
// // main.cpp // HDU2087 // // Created by teddywang on 16/4/22. // Copyright © 2016年 teddywang. All rights reserved. // #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; char s[1015],t[1015]; int nexts[1015],lent,lens; void getnext() { int i=0,j=-1; nexts[0]=-1; while(i<lent) { if(j==-1||t[i]==t[j]) { if(t[++i]==t[++j]) nexts[i]=nexts[j]; else nexts[i]=j; } else j=nexts[j]; } } int kmp() { getnext(); int ans=0; int i=0,j=0; while(i<lens) { if(j==-1||s[i]==t[j]) { ++i;++j; if(j==lent) { j=0; ans++; } } else j=nexts[j]; } return ans; } int main() { while(scanf("%s",s)) { if(s[0]=='#') break; scanf("%s",t); lens=strlen(s); lent=strlen(t); cout<<kmp()<<endl; memset(s,0,sizeof(s)); memset(t,0,sizeof(t)); } }
相关文章推荐
- 001潜入大数据Hadoop框架的世界
- redis 如何 把文件对象存进去
- 《CLR via C#:框架设计》读书笔记 - 计算限制的异步操作
- 来自社区的Visual Studio Code使用体验和教程
- 关于iOS SDK中HTTPS强制握手的经验分享
- Andbase应用开发框架
- springMVC(1)------springMVC之XML实例
- HDU 1686 Oulipo
- 使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示
- 《CLR via C#:框架设计》读书笔记 - 线程基础
- 使用Fiddler自定义百度云分享提取码
- 第十章·优先级队列
- 什么是Docker?
- [置顶] 活动选择问题(1)-动态规划分析
- libevent高性能网络库源码分析——事件循环(五)
- struts2之url标签详解
- 《CLR via C#:框架设计》读书笔记 - 运行时序列化
- poj2524
- Js面向(基于)对象编程
- 《CLR via C#:框架设计》读书笔记 - 程序集加载和反射