HDOJ--2087--剪花布条(BF算法和KMP算法都能使用)
剪花布条
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12007 Accepted Submission(s): 7688
#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算法:
#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算法都能使用)相关推荐
- BF算法和KMP算法
给定两个字符串S和T,在主串S中查找子串T的过程称为串匹配(string matching,也称模式匹配),T称为模式.这里将介绍处理串匹配问题的两种算法,BF算法和KMP算法. BF算法 (暴力匹配 ...
- Algorithm:C++语言实现之字符串相关算法(字符串的循环左移、字符串的全排列、带有同个字符的全排列、串匹配问题的BF算法和KMP算法)
Algorithm:C++语言实现之字符串相关算法(字符串的循环左移.字符串的全排列.带有同个字符的全排列.串匹配问题的BF算法和KMP算法) 目录 一.字符串的算法 1.字符串的循环左移 2.字符串 ...
- 若S作主串,P作模式串,试分别写出利用BF算法和KMP算法的匹配过程。
目 录 题目: 百度文库-答案: (1) (2) MOOC标准答案: (1) (2) mooc答案-截图: 数据结构(C语言版)-严蔚敏2007 题目: 设字符串S='aabaabaabaac', ...
- 【算法篇-字符串匹配算法】BF算法和KMP算法
目录 前言 1. BF算法 1.1 画图分析 1.3 BF 算法的时间复杂度 2. KMP 算法 2.1 KMP 算法和 BF 算法 的区别 2.1.1 为什么主串不回退? 2. 2 next 数组 ...
- 数据结构之字符串匹配算法(BF算法和KMP算法)
字符串匹配算法: 就是给定两个串,主串(s)和子串(sub), 查找子串是否在主串里面,如果找到便返回子串在主串中第一个元素的位置下标,否贼返回-1,. 在这里我 们讨论的时候主要用字符串来举例实现. ...
- 模式串匹配的BF算法和KMP算法
KMP是三位大牛:D.E.Knuth.J.H.Morris和V.R.Pratt同时发现的.为了解决模式匹配问题,也即寻找模式串(子串)在主串中第一次出现的位置,若模式串在主串中不存在则返回-1. 简单 ...
- 字符串匹配—BF算法和KMP算法
BF算法 本章重点是是KMP算法,但是由于其较难理解,先从更简单朴素的BF算法开始. 其思路非常简单 也就是,对这样两个字符串(称短的为模式串,长的为主串): 让主串和模式串的每个字符逐个匹配,如果从 ...
- 串的BF算法和KMP算法个人总结
子串(模式串)的定位操作通常称作串的模式匹配 其中包含最初始的BF算法(Brute-Force)即简单匹配算法或者称作朴素的模式匹配算法,利用穷举法的思路 另一种就是改进后的KMP算法,还有对KMP算 ...
- BF算法和KMP算法实现
https://blog.csdn.net/xxibgdrgn_liqian_a_/article/details/80690593
- 数据结构与算法之美笔记——基础篇(下):图、字符串匹配算法(BF 算法和 RK 算法、BM 算法和 KMP 算法 、Trie 树和 AC 自动机)
图 如何存储微博.微信等社交网络中的好友关系?图.实际上,涉及图的算法有很多,也非常复杂,比如图的搜索.最短路径.最小生成树.二分图等等.我们今天聚焦在图存储这一方面,后面会分好几节来依次讲解图相关的 ...
最新文章
- 芯片史上最大收购案!「博通」拟斥资1000亿美元收购「高通」
- 重新捡起flask(二)
- 高级语言的编译:链接及装载过程介绍
- redhat6.4中手动创建oracle11g数据库
- MyBatis-学习笔记06【06.使用Mybatis完成DAO层的开发】
- 深入【Get】与【Post】区别
- oracle查看和替换含不可见字符(空白)
- ID生成器 雪花算法
- 《你的灯亮着吗》阅读笔记(三)
- 计算机应用基础第二章,计算机应用基础第二章上机操作题
- Android 基本开发规范(必读)
- 关于PostgreSQL空间膨胀的研究
- photoshop CS6 DDS插件
- 在python中安装插件pynput实现聊天窗口消息轰炸
- c语言皮尔森系数程序,皮尔森相关系数(Pearson correlation coefficient)-Go语言中文社区...
- 【不三不四的脑洞】“被相亲对象拉黑“所引发的关于链表合并算法的思考
- 字体粗细怎么设置 html,html中字体的粗细怎么设置?字体大小是font-size,那粗细怎么设置的?...
- 利用PHP开发的一款万能、表白墙系统
- in和exist区别
- group by 用法
热门文章
- Kubernetes入门——k8s概念和架构
- 疫情下的创业品牌如何逆风翻盘?
- 拥抱Flutter,从0到1构建大前端应用
- Android应用程序组件Content Provider简要介绍和学习计划 .
- PyTorch:安装和配置
- Scala:提取器(Extractor)
- numpy教程:numpy基本数据类型及多维数组元素存取
- chrome正受到自动软件的控制_河南科信混凝土搅拌站电脑全自动控制系统PLY1200A称重控制器上位机软件现场安装调试...
- Android 控件系列篇
- Android 自定义View(二)绘制一个封闭多边形