数据结构实验病毒感染检测问题
假设病毒的DNA序列为baa,患者1的DNA序列为aaabbba,则感染。患者2的DNA序列为babbba,则未感染。(注意:人的DNA序列是线性的,而病毒的DNA序列是环状的)。
下面分别展示BF算法以及KMP算法的实现
注:KMP算法理解起来比较困难,若想简单理解原理,则可参考天勤的讲解
BF算法:
#include <iostream>
#include <string>
using namespace std;int index_BF(const string &str1, const string &str2, int pos);int main(){int pos = 0;string str1,str2;while(cin >> str2 >> str1){if(str1 == "0" || str2 == "0")break;int result = index_BF(str1,str2,pos);if(result != -1){cout << "YES " << result << endl;}else{cout << "NO" << endl;}}}int index_BF(const string &str1, const string &str2, int pos){int i = pos;int j= 0;int len1 = str1.size();int len2 = str2.size();while(i<len1 && j<len2){if(str1[i] == str2[j]){i++;j++;}else{i = i - j + 1;j = 0;}}if(j >= len2)return i-len2;elsereturn -1;}
KMP算法:
#include<iostream>#include<cstring>#include<string>#include<fstream>using namespace std;void get_next(string str2,int *next){int i,j;i=1;j=0;next[1]=0;while(i<str2.size()){if(j==0||str2[i]==str2[j]){++i;++j;if(str2[i]!=str2[j])next[i]=j;elsenext[i]=next[j];}elsej=next[j];}}int kmp(string &str1,string &str2,int pos){int i=pos;int j=0;int next[255];get_next(str2,next);int len1=str1.size();int len2=str2.size();while(i<len1&&j<len2){if(j==0||str1[i]==str2[j]){i++;j++;}else{j=next[j];}}if(j>=len2)return i-len2;elsereturn -1;}int main(){int pos=0 ;string str1;string str2;while(cin >>str2>>str1){if(str1=="0"&&str2=="0")break;int result=kmp(str1,str2,pos);if(result!=-1)cout<<"YES"<<endl;elsecout<<"NO"<<endl;}return 0;}
数据结构实验病毒感染检测问题相关推荐
- 数据结构实验病毒感染检测问题(C++)
医学研究者最近发现了某些新病毒,通过对这些病毒的分析,得知他们的DNA序列都是环状的.现在研究者已收集了大量的病毒DNA和人的DNA数据,想快速检测出这些人是否感染了相应的病毒.为了方便研究,研究者将 ...
- 数据结构实验——病毒检测(KMP实现)
//此代码的NextVal数组以0开头 //需要在工程下建立"病毒感染检测输入数据.txt"文件 #include<iostream> #include<fstr ...
- (C语言)数据结构算法-病毒感染检测(BF算法KMP算法)
病毒感染检测: 医学研究者最近发现了某些新病毒,得知它们的DNA序列都是环状的.为了快速检测出患者是否感染了相应的病毒,研究者将患者的DNA和病毒的DNA均表示成一些字母组成的字符串序列,然后检测某种 ...
- 数据结构之病毒感染检测问题
问题描述: 医学研究者最近发现了某新病毒,通过对这些病毒的分析,得知他们的DNA序列都是环状的.现在研究者已收集了大量 的病毒DNA和人的DNA数据,想快速检测出这些人是否感染了相应的病毒.为了研究方 ...
- 数据结构——基于字符串模式匹配算法的病毒感染检测
实验四 基于字符串模式匹配算法的病毒感染检测 [实验目的] 1.掌握字符串的顺序存储表示方法. 2.掌握字符串模式匹配BF算法和KMP算法的实现. [实验内容] 问题描述 医学研究者最近发现了某些新病 ...
- 数据据结构实验4《基于字符串模式匹配算法的病毒感染检测》
(visual studio 2019可运行) 输入及输出要求见<数据结构C语言(第二版)>严蔚敏版 [本文仅用于啥都看不懂还想交作业选手] //KMP求解基于字符串模式匹配算法的病毒感染 ...
- 广州大学 数据结构实验报告
数据结构 实验一 一.实验目的: 1.线性表的链表实现:遍历.查找.插入.删除.翻转 2.栈的链式存储结构实现:入栈.出栈 3.队列的链式存储结构的实现:入队.出队 4.线性表.栈和队列的应用实现 二 ...
- 数据结构实验之链表五:单链表的拆分-sdut
数据结构实验之链表五:单链表的拆分 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 输入N个 ...
- SDUT OJ 数据结构实验之排序一:一趟快排
数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT-2449_数据结构实验之栈与队列十:走迷宫
数据结构实验之栈与队列十:走迷宫 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 一个由n * m 个格子组成的迷宫,起 ...
最新文章
- FPGA之道(78)静态时序分析(四)内部时钟相关时序分析
- WINCE config.bib文件中的FSRAMPERCENT的意义
- 【PC工具】文件压缩解压工具winrar解压缩装机必备软件,winRAR5.70免费无广告
- ping程序和tracert(traceroute)背后的故事--ICMP协议
- linux usb xhci ehci,ehci和xhci有什么区别
- android重新编译res,使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中lt;meta-datagt;变量的值...
- MySQL5.5安装版安装教程
- 1、position用法技巧,2、CSS 属性 选择器,3、CSS 选择器
- handbrake下载太慢_handbrake使用教程
- 手机号码正则_正则表达式小白有这两个工具就够了 正则表达式生成工具
- ENSP模拟AC/AP配置
- 设计模式(三) 抽象工厂模式
- 查看linux主机防火墙列表,linux防火墙状态查看的方法实例
- 融合泊车占比超过60%,除了德赛西威,还有哪些本土供应商
- 暗6 雷电三接口突然失效解决办法
- 微信小程序注册流程详解
- Selenium+Python+Pycharm自动化环境搭建具体步骤
- 【智能车竞赛】第18届比赛规则整理以及往届对比
- import nose ImportError: No module named 'nose'
- VTK:体绘制裁剪——Clipping技术
热门文章
- asdm java设置,[小技巧] 在CISCO ASA 5505防火墙上开启ASDM图形界面
- 苹果cms播放器html,苹果cms 全局播放器dplayer带后台Dplayer播放器苹果CMSV10插件
- kali安装zmap
- 图片节点html,Qunee for HTML5 - 中文 : 节点图片
- 电商业务设计:社交电商产品核心设计
- 博信医药系统连接不到服务器,博信医药管理系统
- 微信小程序用什么工具开发(微信小程序开发工具介绍)
- PSPNet | 语义分割及场景分析
- 计算机名改为名字的拼音,批量转换中文文件名为拼音
- GO 语言的GOROOT 和GOPATH