剪花布条

Problem Description
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?
 
Input
输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。
 
Output
输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。(各种口语。。)
 
Sample Input
abcde a3
aaaaaa aa
#
 
Sample Output
0
3
思路:大水题..但是有一个地方需要理解;就是当知道匹配完了文本串,需要进行下一次匹配我该知道设置文本串里面的下标即j的值?那就认为这一次匹配是失败的,下标j应该是什么值即可;(显然当不能匹配下标j就需要从0开始)
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N = ;
char p[N],T[N];
int f[N];
void getfail()
{
f[] = f[] = ;
int n = strlen(p);
for(int i = ;i < n;i++){
int j = f[i];
if(j && p[i] != p[j]) j = f[j];
f[i+] = (p[i] == p[j] ?j+:);// i+1会递推到第n位
}
}
void Find()
{
int ans = ,j = ,n = strlen(T),m = strlen(p);
for(int i = ;i < n;i++){
while(j && T[i] != p[j]) j = f[j];
if(T[i] == p[j]) j++;
if(j == m){
ans++,j = ;
}
}
printf("%d\n",ans);
}
int main()
{
while(scanf("%s",T), T[] != '#'){
scanf("%s", p);
getfail();
Find();
}
}

hdu 2087 剪花布条 KMP多次匹配的更多相关文章

  1. HDU 2087 剪花布条 KMP极其初级之入门题(KMP模板在这里)

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

  2. HDU 2087 剪花布条 KMP入门

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

  3. HDU 2087 剪花布条 KMP

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2087 KMP匹配数—— AC代码: #include <iostream> #includ ...

  4. hdu 2087 剪花布条 kmp模板题

    也是kuangbin专题的 专题名字太长 不复制了…… 刚好数据结构也学了kmp 找一道题敲敲模板…… 暴力的字符串匹配是O(n*m)的时间复杂度 而kmp通过一个O(m)的预处理将字符串匹配的时间复 ...

  5. HDU——2087剪花布条

    剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  6. 题解报告:hdu 2087 剪花布条(KMP入门)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面 ...

  7. 【HDU 2087 剪花布条】

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  8. hdu 2087剪花布条

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 思路:正常KMP求解aaaaaa  aa得到的结果是6,这题是3.仅仅改一点代码就行 当匹配完之 ...

  9. HDOJ/HDU 2087 剪花布条(indexOf()应用~~)

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

随机推荐

  1. OAuth 2 Developers Guide--reference

    Introduction This is the user guide for the support for OAuth 2.0. For OAuth 1.0, everything is diff ...

  2. 面试体验:Microsoft 篇(转)

    http://www.cnblogs.com/cathsfz/archive/2012/08/14/microsoft-interview-experience.html 在上一篇<面试体验:G ...

  3. ArcGIS中的影像色彩校正(转)

    ArcGIS中的影像色彩校正 在遥感影像处理工作中,影像镶嵌是最常用影像处理方式之一,关于影像镶嵌的相关功能,在ArcGIS中有多种实现途径,如使用Mosaic工具.创建镶嵌数据集来进行虚拟镶嵌等等. ...

  4. oracle 事务简介,锁的概念,java访问数据库注意事项

    java链接oracle和连接其他数据库一样有两种方式:1 桥接 jdbc-obdc2 jbdc insert语句一次插入大量数据 insert into table (列1,列2,列3) selec ...

  5. C语言结构体的引入

    #include <stdio.h> struct student{ int ID; ]; int age; }; int main(){ //赋值: , }; ,.name=}; , , ...

  6. 数字转化成字符串C语言

    #include <stdio.h> void Myitoa(int,char *); int getnumberLength(int); int main(){ ]; ; Myitoa( ...

  7. NUMA CPU optimization

    technologies:  OS, CPU cache, numa structure, memory access

  8. [关于SQL]查询成绩都大于80分的学生

    1.用一条SQL语句 查询出每门课都大于80分的学生姓名name kecheng fenshu张三 语文 81张三 数学 75李四 语文 76李四 数学 90王五 语文 81王五 数学 100王五 英 ...

  9. Greedy

    在现实世界中,有这样一类问题:它有n个输入,而它的解就由这n个输入的某个子集组成,不过这个子集必须满足某些事先给定的条件.把那些必须满足的条件称为约束条件:而把满足约束条件的子集称为该问题的可行解.问 ...

  10. 【译文】NginScript – 为什么我们要实现自己的JS引擎?

    在上周的nginx.conf 2015用户大会上,我们发布了全新的JavaScript引擎nginscript的预览版.历史上,JavaScript语言已经应用在许多方面,首先是作为客户端脚本,然后又 ...