采用 KMP 算法编程实现病毒感染检测算法

#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;typedef struct {char ch[600]; //若是非空串,则按串长分配存储区,否则 ch 为 NULLint len; //串长度
}HString;int Index_BF(HString S, HString T, int pos)
{//返回模式 T 在主串 S 中第 pos 个字符开始第一次出现的位置。若不存在,则返回值为 0//其中,T 非空,1≤pos≤StrLength(S)int i, j;i = pos; j = 1;while (i <= S.len &&j <= T.len){if (S.ch[i] == T.ch[j]) { ++i; ++j; } //继续比较后继字符else { i = i - j + 2; j = 1; } //指针后退重新开始匹配}if (j > T.len) return i - T.len;else return 0;
}void Virus_detection()
{int num, m, flag, i, j;char Vir[600];HString Virus, Person, temp;ifstream inFile("病毒感染检测输入数据.txt");ofstream outFile("病毒感染检测输出结果.txt");inFile >> num;//读取待检测的任务数while (num--) //依次检测每对病毒 DNA 和人的 DNA 是否匹配{inFile >> Virus.ch + 1;//读取病毒 DNA 序列inFile >> Person.ch + 1;//读取人的 DNA 序列strcpy_s(Vir, Virus.ch);Virus.len = strlen(Virus.ch) - 1;Person.len = strlen(Person.ch) - 1;flag = 0;//用来标识是否匹配,初始为 0,匹配后为非m = Virus.len;for (i = m + 1, j = 1; j <= m; j++)Virus.ch[i++] = Virus.ch[j];Virus.ch[2 * m + 1] = '\0';for (i = 0; i < m; i++) {for (j = 1; j <= m; j++)temp.ch[j] = Virus.ch[i + j];temp.ch[m + 1] = '\0';temp.len = m;Index_BF(Person, temp, 1);flag = Index_BF(Person, temp, 1);if (flag)break;}if (flag)outFile << Vir + 1 << " " << Person.ch + 1 << " " << "   YES" << endl;elseoutFile << Vir + 1 << "   " << Person.ch + 1 << " " << "   NO" << endl;}
}int main()
{Virus_detection();return 0;
}

病毒感染检测输入数据.txt(文件放在.exe文件同一文件夹内,此文件需要自己建立)
10
baa bbaabbba
bba aaabbbba
aabb abceaabb
aabb abaabcea
abcd cdabbbab
abcd cabbbbab
abcde bcdedbda
acc bdedbcda
cde cdcdcdec
cced cdccdcce

输出结果(输出文件为自动生成)

采用 KMP 算法编程实现病毒感染检测算法相关推荐

  1. html5 游戏 算法,JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】...

    JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解[圆形情况] 发布时间:2020-10-10 13:42:43 来源:脚本之家 阅读:95 作者:krapnik 本文实例讲述了JS/HTML ...

  2. 【手撕算法】AC显著性检测算法

    [手撕算法]AC显著性检测算法 算法原理 论文名称: Salient Region Detection and Segmentation AC算法同样是计算每个像素的显著值,但却不是基于全局对比度,而 ...

  3. 算法的trick_目标检测算法中的常见trick

    目标检测算法中的常见trick 最近忙着打比赛,感觉看论文也很难静下心来了.基本上看得相当匆忙,主要还是以应用为主.上周压力比较大,没有来得及更新,感觉再不更就说不过去了. 因为比赛比较追求perfo ...

  4. 【时间序列异常检测算法】——传统异常检测算法介绍及代码实现

    背景 前面博客讲述了正常值组成的时间序列如何预测t时刻的值,是时序预测任务: 这里讲述的是包含有异常值的时间序列如何判定哪个时刻发生了异常,是时序异常检测任务. 同比:本期与同期做对比. 环比:本期与 ...

  5. 【手撕算法】HC显著性检测算法

    前言 HC算法出自程明明老师的论文: Global Contrast based Salient Region Detection 这个论文一共提到了两种算法,分别是HC与RC. HC仅仅是考虑了颜色 ...

  6. 目标检测算法YOLOv4详解

    YOLOv4是精度速度最优平衡, 各种调优手段是真香,本文主要从以下几个方面进行阐述: YOLOv4介绍 YOLOv4框架原理 BackBone训练策略 BackBone推理策略 检测头训练策略 检测 ...

  7. YOLO目标检测算法

    YOLO算法 简介 本文主要介绍YOLO算法,包括YOLOv1.YOLOv2/YOLO9000和YOLOv3.YOLO算法作为one-stage目标检测算法最典型的代表,其基于深度神经网络进行对象的识 ...

  8. 基于深度学习的磁环表面缺陷检测算法

    基于深度学习的磁环表面缺陷检测算法 人工智能技术与咨询 来源:< 人工智能与机器人研究> ,作者罗菁等 关键词: 缺陷检测:深度学习:磁环:YOLOv3: 摘要: 在磁环的生产制造过程中, ...

  9. 3综述 yolo_Onestage目标检测算法综述

    转自 | AI开发者    YOLO-v1 YOLO 就是使用回归这种做法的典型算法. 首先将图片 Resize 到固定尺寸,然后通过一套卷积神经网络,最后接上 FC 直接输出结果,这就他们整个网络的 ...

  10. 干货|基于深度学习的目标检测算法面试必备(RCNN~YOLOv5)

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨不出名的小金@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/35406 ...

最新文章

  1. linux分区_Linux系统 fdisk管理MBR分区
  2. POJ 1703 Find them, Catch them【并查集】
  3. table表格细边框
  4. androidstuido_schooltest_1
  5. Mybatis接口Mapper内的方法为啥不能重载吗?
  6. 如何保证access_token长期有效
  7. iPad+MacBook+安卓手机的图书馆工作方案!超高效率!堪比移动工作站!
  8. 马斯克脑机接口_马斯克的脑机接口,让我倍感担忧
  9. Kali Linux 网络扫描秘籍 第七章 Web 应用扫描(二)
  10. 安卓Java按钮编写加一减一_android studio 中点击button加1或者减1
  11. 某虚拟化项目中思科与华为交换机链路聚合互连案例
  12. sql数据库批量插入
  13. C#语句之while语句
  14. 【TL431】TL431精密电压调节器简介
  15. 为什么搜狗输入法显示服务器异常,为什么搜狗拼音输入法一直出现错误报告?...
  16. Php微云解析,更新微云网盘解析规则
  17. react-app-rewired 修改 react 项目默认端口号
  18. SpinLock 锁实现
  19. 树莓派开发板Android Things镜像烧录
  20. 电路设计_自恢复保险丝参数说明

热门文章

  1. 协同过滤算法_从网易云日推浅谈个性化推荐系统(1)——基于用户的协同过滤算法...
  2. 在计算机中()个字节称为MB,计算机基础考试题库(范文).doc
  3. python分秒换算_如何将度分秒转换为度分
  4. oracle用命令导入dmp,Oracle导出导入dmp文件(exp.imp命令行)
  5. java集成 腾讯信鸽_java后台集成腾讯信鸽消息推送
  6. 数字化转型背景下的“新IT职业教育”
  7. word 宏相关代码集合
  8. 书蠹诗魔——张岱《湖心亭看雪》
  9. C++设计模式从入门到精通——实例说明
  10. 利用echarts中的map地图中的中国地图,并使中国地图显示效果为轮廓显示到市级级别效果(真实项目中亲测有效~)