剪花布条

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12007    Accepted Submission(s): 7688

Problem Description
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?
Input
输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。
Output
输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。
Sample Input
abcde a3 aaaaaa aa #
Sample Output
0 3
思路:无脑使用BF算法,应用KMP算法应该也可以解决。下次做用KMP算法解决。
ac代码(BF算法)
#include<stdio.h>
#include<string.h>
char a[110],b[110];
int lena,lenb;
int BF(){int ans=0;int i=1,j=1;while(i<=lena){if(a[i]==b[j]){if(j==lenb){j=1;i++;ans++;continue;}i++;j++;}else{i=i-j+2;j=1;}}return ans;
}
int main(){while(scanf("%s",a+1)!=EOF){if(a[1]=='#')break;scanf("%s",b+1);   lena=strlen(a+1);lenb=strlen(b+1);int ans=BF();printf("%d\n",ans);} return 0;
} 

KMP算法:

ac代码:

#include<stdio.h>
#include<string.h>
char a[110],b[110];
int lena,lenb,next[110],nextval[110];
void get_next(){//为了熟练下对next数组的求解,这个函数 并无太大实际意义。 next[1]=0;int i=1,j=0;while(i<lenb){if(j==0||b[i]==b[j]){//满足此条件则对next数组进行赋值。 i++;j++;next[i]=j;}elsej=next[j];}
}
void get_nextval(){nextval[1]=0;int i=1,j=0;while(i<lenb){if(j==0||b[i]==b[j]){//满足此条件即可对next数组进行赋值。 i++;j++;if(b[i]!=b[j])//满足此条件就可以对nextvla数组进行赋值。 nextval[i]=j;elsenextval[i]=nextval[j];}else//不满足则返回。 j=nextval[j];}
}
int kmp(){get_nextval();int i=1,j=1,ans=0;while(i<=lena){if(j==0||a[i]==b[j]){i++;j++;}else{j=nextval[j];}if(j>lenb){ans++;j=1;}}return ans;
}
int main(){while(scanf("%s",a+1)!=EOF){if(a[1]=='#')break;scanf("%s",b+1);lena=strlen(a+1);lenb=strlen(b+1);int ans=kmp();printf("%d\n",ans);}return 0;
} 

HDOJ--2087--剪花布条(BF算法和KMP算法都能使用)相关推荐

  1. BF算法和KMP算法

    给定两个字符串S和T,在主串S中查找子串T的过程称为串匹配(string matching,也称模式匹配),T称为模式.这里将介绍处理串匹配问题的两种算法,BF算法和KMP算法. BF算法 (暴力匹配 ...

  2. Algorithm:C++语言实现之字符串相关算法(字符串的循环左移、字符串的全排列、带有同个字符的全排列、串匹配问题的BF算法和KMP算法)

    Algorithm:C++语言实现之字符串相关算法(字符串的循环左移.字符串的全排列.带有同个字符的全排列.串匹配问题的BF算法和KMP算法) 目录 一.字符串的算法 1.字符串的循环左移 2.字符串 ...

  3. 若S作主串,P作模式串,试分别写出利用BF算法和KMP算法的匹配过程。

    目   录 题目: 百度文库-答案: (1) (2) MOOC标准答案: (1) (2) mooc答案-截图: 数据结构(C语言版)-严蔚敏2007 题目: 设字符串S='aabaabaabaac', ...

  4. 【算法篇-字符串匹配算法】BF算法和KMP算法

    目录 前言 1. BF算法 1.1 画图分析 1.3 BF 算法的时间复杂度 2. KMP 算法 2.1 KMP 算法和 BF 算法 的区别 2.1.1 为什么主串不回退? 2. 2 next 数组 ...

  5. 数据结构之字符串匹配算法(BF算法和KMP算法)

    字符串匹配算法: 就是给定两个串,主串(s)和子串(sub), 查找子串是否在主串里面,如果找到便返回子串在主串中第一个元素的位置下标,否贼返回-1,. 在这里我 们讨论的时候主要用字符串来举例实现. ...

  6. 模式串匹配的BF算法和KMP算法

    KMP是三位大牛:D.E.Knuth.J.H.Morris和V.R.Pratt同时发现的.为了解决模式匹配问题,也即寻找模式串(子串)在主串中第一次出现的位置,若模式串在主串中不存在则返回-1. 简单 ...

  7. 字符串匹配—BF算法和KMP算法

    BF算法 本章重点是是KMP算法,但是由于其较难理解,先从更简单朴素的BF算法开始. 其思路非常简单 也就是,对这样两个字符串(称短的为模式串,长的为主串): 让主串和模式串的每个字符逐个匹配,如果从 ...

  8. 串的BF算法和KMP算法个人总结

    子串(模式串)的定位操作通常称作串的模式匹配 其中包含最初始的BF算法(Brute-Force)即简单匹配算法或者称作朴素的模式匹配算法,利用穷举法的思路 另一种就是改进后的KMP算法,还有对KMP算 ...

  9. BF算法和KMP算法实现

    https://blog.csdn.net/xxibgdrgn_liqian_a_/article/details/80690593

  10. 数据结构与算法之美笔记——基础篇(下):图、字符串匹配算法(BF 算法和 RK 算法、BM 算法和 KMP 算法 、Trie 树和 AC 自动机)

    图 如何存储微博.微信等社交网络中的好友关系?图.实际上,涉及图的算法有很多,也非常复杂,比如图的搜索.最短路径.最小生成树.二分图等等.我们今天聚焦在图存储这一方面,后面会分好几节来依次讲解图相关的 ...

最新文章

  1. 芯片史上最大收购案!「博通」拟斥资1000亿美元收购「高通」
  2. 重新捡起flask(二)
  3. 高级语言的编译:链接及装载过程介绍
  4. redhat6.4中手动创建oracle11g数据库
  5. MyBatis-学习笔记06【06.使用Mybatis完成DAO层的开发】
  6. 深入【Get】与【Post】区别
  7. oracle查看和替换含不可见字符(空白)
  8. ID生成器 雪花算法
  9. 《你的灯亮着吗》阅读笔记(三)
  10. 计算机应用基础第二章,计算机应用基础第二章上机操作题
  11. Android 基本开发规范(必读)
  12. 关于PostgreSQL空间膨胀的研究
  13. photoshop CS6 DDS插件
  14. 在python中安装插件pynput实现聊天窗口消息轰炸
  15. c语言皮尔森系数程序,皮尔森相关系数(Pearson correlation coefficient)-Go语言中文社区...
  16. 【不三不四的脑洞】“被相亲对象拉黑“所引发的关于链表合并算法的思考
  17. 字体粗细怎么设置 html,html中字体的粗细怎么设置?字体大小是font-size,那粗细怎么设置的?...
  18. 利用PHP开发的一款万能、表白墙系统
  19. in和exist区别
  20. group by 用法

热门文章

  1. Kubernetes入门——k8s概念和架构
  2. 疫情下的创业品牌如何逆风翻盘?
  3. 拥抱Flutter,从0到1构建大前端应用
  4. Android应用程序组件Content Provider简要介绍和学习计划 .
  5. PyTorch:安装和配置
  6. Scala:提取器(Extractor)
  7. numpy教程:numpy基本数据类型及多维数组元素存取
  8. chrome正受到自动软件的控制_河南科信混凝土搅拌站电脑全自动控制系统PLY1200A称重控制器上位机软件现场安装调试...
  9. Android 控件系列篇
  10. Android 自定义View(二)绘制一个封闭多边形