这道题当初我想着直接抄课本上的BF代码,结果发现书中的代码都是默认模式串和主串的下标从零开始,因此需要将书中的代码进行修改。如下图所示,需要将变量i,j的初值都设为0。然后将书中出现的i,j全部加1即可。然后这个函数中的第三个参数,pos的值我没有使用,这个无所谓,因为这道题的模式匹配都是从主串的第一个位置开始。

第一个函数的代码如下:

int Index_BF(HString P,HString V,int pos)
{//返回模式T在主串S中第pos个字符开始第一次出现的位置。若不存在,则返回值为0 //其中,T非空,1≤pos≤StrLength(S) V.length=strlen(V.ch);int i=0,j=0;while(i+1<=P.length&&j+1<=V.length){if(P.ch[i]==V.ch[j]){++i;++j;}else{i=i-j+1;j=0;}}if(j+1>V.length) {return i-V.length+1;}   elsereturn 0;
} 

第二个函数的算法没有什么可说的,就按照一般的环形字符串解决方法,再开一个两倍长度的数组,将模式串存储两次,再依次取字符串即可。代码如下:

bool Virus_detection(HString Virus,HString Person)
{//判断是否匹配,如果可以,返回true,否则返回false
//模式匹配算法调用Index_BF函数 int flag=0;HString temp;temp.ch=new char[200];int m=Virus.length;for(int i=m,j=0;j<m;j++){Virus.ch[i++]=Virus.ch[j];}Virus.ch[2*m]='\0';for(int  i=0;i<m;i++){for(int j=0;j<m;j++){temp.ch[j]=Virus.ch[i+j];}temp.ch[m]='\0';flag=Index_BF(Person,temp,1);if(flag) break;}delete temp.ch;if(flag) return true;   elsereturn false;
}

这道题当初我出现的问题是只定义了一个HString类型的temp,却没有为他分配空间,导致后面出现了内存泄露的问题。

希望能帮助到大家。

BFU数据结构头歌实验:基于BF算法的病毒感染检测相关推荐

  1. 数据结构头歌实验梳理

    数据结构头歌实验梳理 实验一 算法表示与实现基础 1 数据交换 2 最大最小值问题 3 ADT-Complex 数据结构与算法 - 线性表 1 实现一个顺序存储的线性表 2 实现一个链接存储的线性表 ...

  2. AlphaBeta剪枝算法求解博弈树最优选择 头歌实验平台

    AlphaBeta剪枝算法求解博弈树最优选择 头歌实验平台 前言 一.AlphaBeta剪枝是什么? 1.由来, 最大最小决策树 2.发展 3. AlphaBeta剪枝 二.实验算法伪代码 三.实验算 ...

  3. Java头歌实验梳理

    Java头歌实验梳理 实验一:JAVA编程基础 编写一个简单Java程序,计算银行年存款的本息 编写程序完成矩阵的乘法运算 编写程序用*号输出等腰梯形 实验二:字符串 字符串的值转换成浮点型 字符转换 ...

  4. 基于Adaboost算法的车牌检测在OpenCV上的研究与实现

    目录结构 E:\Adaboost\ ---------positive\               //正样本文件夹 ---------pimages\       //正样本图片所在文件夹 --- ...

  5. 【MFC基础入门】基于Adaboost算法的车牌检测在OpenCV上的研究与实现

    目录结构 E:\Adaboost\---------positive\ //正样本文件夹---------pimages\ //正样本图片所在文件夹---------pos.dat //正样本集描述文 ...

  6. 基于Sobel算法的边沿检测设计与实现

    基于Sobel算法的边沿检测设计与实现 1. 边缘检测 2. 实战演练 2.1. matlab进行灰度图像生成 2.2. sobel_ctrl控制模块 2.3. vga显示模块 2.4. 顶层模块实例 ...

  7. YOLOv7如何提高目标检测的速度和精度,基于优化算法提高目标检测速度

    目录 一.学习率调度 二.权重衰减和正则化 三.梯度累积和分布式训练 1.梯度累积 2.分布式训练 四.自适应梯度裁剪 大家好,我是哪吒. 上一篇介绍了YOLOv7如何提高目标检测的速度和精度,基于模 ...

  8. 基于DCT算法的图像模糊检测

    文章目录 基于DCT算法的图像模糊检测 1.离散余弦变换DCT 2.基于离散余弦变换DCT来估计图像模糊度的图像质量评价算法 总结 基于DCT算法的图像模糊检测 转载: https://yinguob ...

  9. Linux操作系统实用功能,简单易操作 头歌实验一

    2022头歌平台操作系统实验一 实验(1):Linux操作系统基本使用 实验(2):Linux之C编程入门 文章目录 2022头歌平台操作系统实验一 前言 一.Linux操作系统基本使用 二.C编程入 ...

  10. 算法复现 - 病毒感染检测(案例4.1算法4.5)

    第1关:案例4_1 病毒感染检测 #include <iostream> #define maxsiz 20 #include<string.h> using namespac ...

最新文章

  1. Windows下Go语言的安装和运行
  2. Java 条件运算符
  3. 35+ Top Apache Tomcat Interview Questions And Answers【转】
  4. thymeleaf入门简介
  5. 「Docker」Docker教程+学习笔记
  6. html div 自动聚焦,让DIV也能够获取焦点
  7. RED5 安装及问题
  8. 理解Promise的3种姿势
  9. (8)USB协议 —— 高速模式握手过程
  10. 软件工程投资回收率计算
  11. 无主之地2 不费子弹手枪
  12. vscode登陆中国版leetcode
  13. python中forward的参数_ip_forward参数对Linux内核转发影响分析
  14. 收藏一个快要消亡的技术古董
  15. apt-get update和apt-get upgrade的区别
  16. appletviewer
  17. 故障处理 软件 需求_软件的质量模型(二)
  18. 批处理 修改注册表 禁用USB
  19. JS使用普通队列实现击鼓传花游戏
  20. 第18课:生活中的外观模式——学妹别慌,学长帮你

热门文章

  1. readxmls r语言_R语言批量爬取NCBI基因注释数据
  2. DedeCMS 标签使用方法汇总!
  3. 无线路由如何快速设置WDS扩展网络
  4. 【随笔】Linux刷脏页
  5. 华为机试(C++)真题Od
  6. ES中 Nested 类型的原理和使用
  7. 【内核调度、负载均衡】【find_busiest_queue】
  8. 年利率、七日年化收益率、万份收益
  9. Android O、N版本修改dex2oat编译选项,减少占用ROM空间或者加快安装速度
  10. 荣耀4a android art,华丽布局全网通,从一堂课诞生的荣耀4A测评