将人的DNA和病毒DNA均表示成由一些字母组成的字符串序列,然后检测某种病毒DNA序列是否在患者的DNA序列中出现过,如果出现过,则此人感染了该病毒,否则没有感染。例如,假设病毒的DNA序列为baa,患者1的DNA序列为aaabbba,则感染;患者2的DNA序列为babbba,则未感染。(注意,人的DNA序列是线性的,而病毒的DNA序列是环状的。)

#include <iostream>
#define maxsiz 20
#include<string.h>
using namespace std;typedef struct Ssring//串的定长顺序结构
{char ch[maxsiz+1];//储存串的一维数组;int length;//串的当前长度
}Ssring;
int GetLength(char *L)//得到字符数组的长度
{int n = 0;char *p = L;while(*p!='\0'){n++;p++;}return n;
}
void inistSstring(Ssring * L)//初始化串
{char a[maxsiz];//定义一个辅助数组cin>>a;char *p= L->ch;//定义一个字符指针,指向串里面的数组strcpy(++p,a);//在数组的下标为1的位置开始赋值,注意为了方便,我们不采用0开始的下标L->length = GetLength(a);//顺便给长度赋值
}
int index(Ssring L1,char* L2,int pos,int L2_length)//返回模式L2在主串L1中第pos个字符开始第一次出现的位置。如果不存在,则返回值为0
{/******************Begin*********************/int i=pos;int j=1;while((j<=L2_length)&&(i<=L1.length)){if(L1.ch[i]==L2[j]){i++;j++;}else{i=i-j+2;j=1;}}if(j>L2_length) return i-L2_length;else  return 0;/**********************End*******************/
}
int virus_detection(Ssring person,Ssring virus)
{int flag = 0;//设置一个标志int  m = virus.length;char temp[virus.length+1];//定义一个辅助数组,但我们为了方便,储存数据时,在下标为一时开始。所以要length+1个空间for(int i = m+1,j=1;j<=m;j++)//将病毒的dna再复制一遍,跟在原来的dna后面。因为病毒dna是循环的。所以,我们要检测它所有的可能{virus.ch[i++]=virus.ch[j];}virus.ch[2*m+1]='\0';//别忘记这里for(int i=0;i<m;i++)//知道了病毒dna的长度,每循环一次可得到病毒的一种dna序列{for(int j=1;j<=m;j++){temp[j]=virus.ch[i+j];}temp[m+1]='\0';//flag = index(person,temp,1,virus.length);//在这里采用BF算法即可flag = index(person,temp,1,virus.length);if(flag) break;}if(flag)return 1;elsereturn 0;
}
int main()
{int n,flag;cin>>n;while(n--){Ssring L1;Ssring L2;    inistSstring(&L2);inistSstring(&L1);flag=virus_detection(L1,L2);if(flag)cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
} 


案例4_1 病毒感染检测(数据结构)相关推荐

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

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

  2. (C语言)数据结构算法-病毒感染检测(BF算法KMP算法)

    病毒感染检测: 医学研究者最近发现了某些新病毒,得知它们的DNA序列都是环状的.为了快速检测出患者是否感染了相应的病毒,研究者将患者的DNA和病毒的DNA均表示成一些字母组成的字符串序列,然后检测某种 ...

  3. 数据结构——基于字符串模式匹配算法的病毒感染检测

    实验四 基于字符串模式匹配算法的病毒感染检测 [实验目的] 1.掌握字符串的顺序存储表示方法. 2.掌握字符串模式匹配BF算法和KMP算法的实现. [实验内容] 问题描述 医学研究者最近发现了某些新病 ...

  4. 数据据结构实验4《基于字符串模式匹配算法的病毒感染检测》

    (visual studio 2019可运行) 输入及输出要求见<数据结构C语言(第二版)>严蔚敏版 [本文仅用于啥都看不懂还想交作业选手] //KMP求解基于字符串模式匹配算法的病毒感染 ...

  5. TFOD:基于TFOD API的官方模型案例对图片进行目标检测

    TFOD:基于TFOD API的官方模型案例对图片进行目标检测 目录 输出结果 设计思路 代码(部分)实例 输出结果 设计思路 代码(部分)实例 #1.导入基本的包和环境,包括两个TFOD中的包 im ...

  6. PTA 病毒感染检测 (15分)

    病毒感染检测 (15分) 作者:王东 单位:贵州师范大学 代码长度限制:16 KB 时间限制:400 ms 内存限制:64 MB 人的DNA和病毒DNA均表示成由一些字母组成的字符串序列.然后检测某种 ...

  7. 7-8 病毒感染检测 (10分)

    7-8 病毒感染检测 (10分) 人的DNA和病毒DNA均表示成由一些字母组成的字符串序列.然后检测某种病毒DNA序列是否在患者的DNA序列中出现过,如果出现过,则此人感染了该病毒,否则没有感染.例如 ...

  8. 7-4 病毒感染检测 (15 分)

    7-4 病毒感染检测 (15 分) 人的DNA和病毒DNA均表示成由一些字母组成的字符串序列.然后检测某种病毒DNA序列是否在患者的DNA序列中出现过,如果出现过,则此人感染了该病毒,否则没有感染.例 ...

  9. 从病毒感染检测谈串的模式匹配

    病毒感染检测:串的模式匹配 BF.KMP算法 在网络入侵检测.计算机病毒特征码匹配以及DNA序列匹配等应用中都需要进行串的模式匹配.针对这个问题,书上讲了两种模式匹配的算法,即BF算法和KMP算法,下 ...

最新文章

  1. flexbox_Flexbox中的Flex基础属性
  2. R语言编写自定义函数、创建使用ggplot2生成图标(icon)的主题(theme)函数、使用ggplot2以及自定义的图标主题函数创建箱图(boxplot)图标、ggsave保存图标(png、svg
  3. 因为名字叫True,她被苹果iCloud服务器拒绝了
  4. 【正一专栏】没有对比就没有伤害-恒大亚冠赛有感
  5. 一直在构建版本_球鞋 | 一鞋两穿?AJ1十孔版本登场,拉链设计还是真香了?
  6. javascript 的默认对象
  7. 选择排序 - python实现详解
  8. 用w32tm设置服务器时间同步
  9. be备份mysql_Linux备份和导入Mysql
  10. LaTex建立参考文献链接
  11. 宿主程序Crash与Lua是动态库还是静态库有关?
  12. 我的CSDN博客之旅
  13. 从门户到搜索:谁为百度打工?
  14. 使用js获取ajax对象,JS获取dom 对象 ajax操作 读写cookie函数
  15. 一个域名对应多个IP地址
  16. Word中批量进行中英文标点的转换
  17. 2013年多益网络校园招聘笔试题
  18. ACM-ICPC 成为方正快手等企业 HR 的战场
  19. 吉林大学计算机学院2002级,吉林大学计算机科学与技术学院导师简介:卢奕南...
  20. 小蚁智能摄像机服务器故障,小蚁智能摄像机app怎么和摄像头连接

热门文章

  1. 如何使用foxmail邮箱登录其他邮箱
  2. PCIE5.0如何进行PCB设计?32G高速信号设计注意事项有哪些,高速板材如何选择?
  3. 考研复试问答(十二)
  4. 亚马逊AWS云计算平台试用手记(完全原创,我花了2美元第一手试用的珍贵资料,附多图)...
  5. Cisco思科网络插件Contiv (一) 安装
  6. pythonnet plink_群体遗传结构构建软件--Plink, admixture, phylip, MEGA总结
  7. plink2.0和plink1.9的忧伤笔记
  8. 中国电力电气创新大会中企业家代表鲁川先生的精彩演讲震耳发聩!
  9. java-实现飞机大战小游戏
  10. 项目制管理提升组织效能︱货拉拉PMO总监姜昌