导航:首页 > 源码编译 > horspool算法c语言

horspool算法c语言

发布时间:2023-06-01 07:19:08

A. 实现Horspool算法并在文本“BESS KNEW ABOUT BAOBABS”中查找模式“BAOBAB”输出比较次数的屏幕截图

horspool和kmp的思路相似,都是通过预处理模式串来找到失配函数(转移函数),进而避免重复运算。算法平均时间复杂度是O(N),但在最坏的情况下,会达到O(MN)。下面的代码打印出了每次转移的结果,方便了解horspool的过程。

#include<bits/stdc++.h>
usingnamespacestd;

constchar*text="BESSKNEWABOUTBAOBABS";
constchar*pattern="BAOBAB";
intT[256];//转移函数

voidinit(constchar*pattern)
{
intsz=strlen(pattern);
for(inti=0;i<256;++i)T[i]=sz;
for(inti=0;i<sz-1;++i)T[pattern[i]]=sz-1-i;
}

intcalc()
{
intsz_text=strlen(text),sz_pattern=strlen(pattern);

inttot=0;悄带//比较次数
intskip=0;//窗口左端点
while(sz_text运氏-skip>=sz_pattern){
//horspool的过程
printf("%s ",text);
for(inti=0;i<skip;++i)putchar('');
printf("%s ",pattern);

inti=sz_pattern-1;
while(text[skip+i]==pattern[i]){
++tot;//比较成功

if(i==0)returntot;
--i;
}
++tot;//比较失败

skip=skip+T[text[skip+启悄芦sz_pattern-1]];
}
returntot;
}

intmain()
{
//对pattern进行预处理
init(pattern);

//horspool
printf("%d ",calc());

return0;
}

运行结果:

阅读全文

与horspool算法c语言相关的资料

热点内容
程序员老公要加班 浏览:961
51单片机控制的超声波 浏览:827
2021去水印最新源码 浏览:232
ug编程刀具号重复 浏览:959
空当接龙算法 浏览:609
可压缩流体非恒定二维流动 浏览:695
天龙八部网单没有找到技能文件夹 浏览:861
android串口程序 浏览:833
上海机器人程序员 浏览:914
两台阿里云服务器如何拷贝 浏览:170
阿里妈妈淘宝联盟需要什么app 浏览:368
什么人可以做编程员 浏览:358
网盘会员加速是在线解压嘛 浏览:109
单片机按键汇编程序 浏览:728
传播学纲要pdf第二版 浏览:385
乐友进销存有什么app 浏览:554
显示器维修pdf 浏览:618
qq支付时怎么双层加密 浏览:943
2008服务器如何做安全 浏览:310
戴尔系统加密怎么解密 浏览:469