hdu2087 剪花布条(KMP)
来源:互联网 发布:淘宝如何打造爆款 编辑:程序博客网 时间:2024/06/06 07:47
剪花布条
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7622 Accepted Submission(s): 5003
Problem Description
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?
Input
输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。
Output
输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。
Sample Input
abcde a3aaaaaa aa#
Sample Output
03
#include<stdio.h>#include<string.h>char s[1004],t[1004];int next[1004],ans;void get_nextval(int len){ int i=0,k=-1; next[0]=-1; while(i<len) if(k==-1||t[i]==t[k]) { ++i; ++k; if(t[i]!=t[k]) next[i]=k; else next[i]=next[k]; } else k=next[k];}void KMP(int ls,int lt){ get_nextval(lt); int i=0,j=0; while(i<ls&&j<lt) if(s[i]==t[j]) { i++; j++; if(j==lt) { ans++; j=0; } } else { if(next[j]!=-1) j=next[j]; else { j=0; i++; } }}int main(){ while(scanf("%s",s),s[0]!='#') { scanf("%s",t); int ls=strlen(s),lt=strlen(t); ans=0; KMP(ls,lt); printf("%d\n",ans); } return 0;}
0 0
- HDU2087-剪花布条(KMP算法)
- hdu2087剪花布条(kmp)
- hdu2087 剪花布条(KMP)
- hdu2087 剪花布条(KMP)
- hdu2087剪花布条(kmp)
- hdu2087 剪花布条(简单KMP)
- hdu2087 剪花布条(kmp)
- hdu2087(剪花布条) KMP算法
- hdu2087 剪花布条--KMP
- HDU2087 剪花布条 [KMP]
- hdu2087 剪花布条 KMP
- hdu2087 剪花布条 kmp
- hdu2087剪花布条[KMP]
- hdu2087 剪花布条【kmp】
- HDU2087--剪花布条 (KMP)
- hdu2087 剪花布条(kmp基础变形)
- HDU2087-剪花布条-KMP模板
- 【hdu2087】剪花布条——KMP
- 第二周作业 2.2: 随机生成一个n bit位的长整数。
- 历届试题 连号区间数
- tomcat内存溢出总结
- 一步步学习SPD2010--第十三章节--管理SP Server环境的Web内容(3)--理解页面模型
- 使用VS2010构建CEGUI0.8.3
- hdu2087 剪花布条(KMP)
- 跨进程访问(AIDL服务)—Service(三)
- 2013-5-5阿里巴巴实习生部分笔试题-武汉
- 不用加减乘除做加法
- oracle解锁表
- 7.时间转换
- Android学习之——(1)项目中的反射学习
- Ibatis 批量新增的两种方法
- Java中sleep()与wait()的区别