bf算法c语言'',BF算法
BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。
中文名
BF算法
B F
Brute Force属 于
普通的模式匹配算法
最坏情况
要进行M*(N-M+1)次比较
BF算法算法思想
编辑
语音
首先S[1]和T[1]比较,若相等,则再比较S[2]和T[2],一直到T[M]为止;若S[1]和T[1]不等,则S向右移动一个字符的位置,再依次进行比较。如果存在k,1≤k≤N,且S[k+1…k+M]=T[1…M],则匹配成功;否则失败。
该算法最坏情况下要进行M*(N-M+1)次比较,时间复杂度为O(M*N)。
举例说明:
S: ababcababa
T: ababa
BF算法匹配的步骤如下:i=0, j=0i=1, j=1i=2,j=2i=3, j=3i=4, j=4(失败)
ababcababaababcababaababcababaababcababaababcababa
ababaababaababaababaababai=1,j=0(失败)
ababcababa
ababai=2,j=0i=3,j=1i=4,j=2(失败)
ababcababaababcababaababcababa
ababaababaababai=3,j=0(失败)
ababcababa
ababai=4,j=0(失败)
ababcababa
ababai=5,j=0i=6,j=1i=7,j=2i=8,j=3i=9,j=4(成功)
ababcababaababcababaababcababaababcababaababcababa
ababaababaababaababaababa
BF算法C语言实现:
编辑
语音
int Index(SString S,SString T,int pos)
{ /* 返回子串T在主串S中第pos个字符之后的位置。若不存在,则函数值为0。 */
/* 其中,T非空,1≤pos≤StrLength(S)。算法4.5 */
int i,j;
if(1<=pos&&pos<=S[0])
{
i=pos;
j=1;
while(i<=S[0]&&j<=T[0])/*S[0],T[0]中存放的为串长*/
if(S[i]==T[j]) /* 继续比较后继字符 */
{
++i;
++j;
}
else /* 指针后退重新开始匹配 */
{
i=i-j+2;
j=1;
}
if(j>T[0])
return i-T[0];
else
return 0;
}
else
return 0;
}
BF算法C#语言实现:
编辑
语音
static int BPTest(string haystack, string needle)
{
int needleLen = needle.Length;
for (int i = 0; i <= haystack.Length - needleLen; i++)
{
for (int j = 0; j < needleLen; j++)
{
if (haystack[j + i] != needle[j])
{
break;
}
if (j == needleLen - 1)
{
return i;
}
}
}
return -1;
}
词条图册
更多图册
bf算法c语言'',BF算法相关推荐
- 老鼠走迷宫php算法,C语言经典算法 - 老鼠走迷官(一)
C语言经典算法 - 老鼠走迷官(一) 说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下 ...
- 克鲁斯卡尔算法c语言,Kruskal算法(一)之 C语言详解
最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总和 ...
- bfgs算法c语言,机器学习算法实现解析——liblbfgs之L-BFGS算法
在博文"优化算法--拟牛顿法之L-BFGS算法"中,已经对L-BFGS的算法原理做了详细的介绍,本文主要就开源代码liblbfgs重新回顾L-BFGS的算法原理以及具体的实现过程, ...
- 四元数算法 c语言,四元数算法运算规则及基本概念
[酷飞网 51kufei.com]上周,我们为大家介绍了求解求解无人机姿态角的各种算法,那么四元数算法基本的运算法则又是什么呢?今天,我们将为大家介绍四元数算法运算规则及基本概念. 大家知道,四元数可 ...
- apriori算法 c语言,数据挖掘算法——Apriori算法
Apriori算法 首先,Apriori算法是关联规则挖掘中很基础也很经典的一个算法. 转载来自:链接:https://www.jianshu.com/p/26d61b83492e 所以做如下补充: ...
- 高斯平滑算法 c语言,高斯模糊算法(gaussian)
项目上对图像处理需要用到点高斯算法,网上找到一篇对原理及部分问题分析讲解的还不错的文章,分享一下,后付自己的一段代码 - 理论 - 高斯分布函数可表示为一个一维的函数G(x) 或者一个二维的函数G(x ...
- prim算法c语言,Prim算法(一)之 C语言详解
本章介绍普里姆算法.和以往一样,本文会先对普里姆算法的理论论知识进行介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现. 普里姆算法介绍 普里姆(Prim)算法,和克鲁斯卡尔算法一样 ...
- 自动寻路算法C语言,bfs算法(c语言贪吃蛇自动寻路算法)
广度优先法(BFS)算法C/C++代码,要说明和图解!谢谢! #include #define MAX 10 int front=-1,rear=-1; struct node { int value ...
- 最小延迟调度问题算法c语言,【算法概论】贪心算法:最小延迟调度问题
最小延迟调度问题 Scheduling to Mnimizing Lateness 问题描述: 假定有一单个的资源在一个时刻只能处理一个任务.现给定一组任务,其中的每个任务 i 包含一个持续时间 ti ...
最新文章
- 从1到N,AI落地现在进行时
- verilog中数组的定义_开源仿真工具Icarus Verilog中的verilog parser
- 证明sinx/x的极限等于1(x趋向于0)
- nginx1.9基于端口的四层负载均衡实践,基于端口的转的负载均衡
- 全国计算机等级考试题库二级C操作题100套(第25套)
- Android实现打开本地文件,Android 打开本地文件(示例代码)
- python 中 __name__ 的使用
- Ext grid 根据行号获取行数据
- 【OS学习笔记】十七 保护模式五:保护模式下如何进行内存保护 与 别名段的意义与作用
- update关联一个视图的时候特别慢_实现一个简单的Vue.js
- matlab 流固耦合,详讲流固耦合
- mysql 插入优化_MySQL批量SQL插入性能优化
- (87)FPGA面试题-同步FIFO与异步FIFO区别?异步FIFO代码设计
- Spring DI依赖注入方式
- Spring源码剖析-Spring核心类认识(一)
- sakai mysql_开源网络教学平台SAKAI开发环境的搭建 | 学步园
- 解决 Eclipse不支持tomcat9
- 常见的网络攻击方法与防范措施
- 像电影里的黑客高手一样敲代码攻击入侵网站!装逼神器 !
- “麒”聚信创,共赢未来——信创解决方案分享会(首场)成功举办
热门文章
- 与其走的快,不如放慢脚步让自己走的稳,走的好!
- ${pageContext.request.contextPath}用法
- ets5怎么找到数据文件夹_mac怎么清理磁盘空间?如何找到并清理Mac电脑“其他”文件?...
- Windows Server 2022 预览版简要体验
- 计算两个矩阵的行向量之间的欧式距离
- linux安全加固浅谈
- OFC 2022 Th3E.1 coherent optics for access from P2P to P2MP
- uvm环境中收集coverage的方法
- 密码学协议举例(一):带有防欺骗的承诺
- OPC之DCOM配置