病毒匹配BF算法

news/2024/9/22 22:24:50/
 #include<iostream>#include<fstream>#include<string.h>#include<utility>using namespace std;typedef struct{char ch[600];		//若是非空串,则按串长分配存储区,否则ch为NULLint len;				//串长度} HString;int Index_BF(HString Virus,HString Person,int V,int P)//V ,P分别为病毒的长度,和患者DNA长度 {int i=0,j=0;//初始化,从第0个位置开始 while(i<V&&j<P)// 两个序列均未到达结尾 {if(Virus.ch[i]==Person.ch[j])//相同,继续往后比较 {++i;++j;}else //不相同,重新匹配 {j=j-i+1;i=0;//患者序列的下一个,病毒序列第一个 }}if(i==V) return 1;//匹配成功 else return 0;//匹配失败 } 
int check(HString &Virus,HString &Person,int V,int P) 
//V ,P分别为病毒的长度,和患者DNA长度 {HString temp;//中转辅助串temp,记录病毒的各种不同序列 int flag=0;// 作为判断元素 for(int i=V,j=0;j<V;j++)Virus.ch[i++]=Virus.ch[j];//将病毒DNA储存两次 Virus.ch[2*V]='\0';//添加结束符号 for(int i=0;i<V;i++)//依次取得每个长度为V的病毒DNA环状字符串 {for(int j=0;j<V;j++){temp.ch[j]=Virus.ch[i+j];}temp.ch[Virus.len]='\0';//添加结束符 flag=Index_BF(temp,Person,V,P);//模式匹配 if(flag)break;//匹配成功,退出循环 }if(flag)return 1;//匹配成功else return 0;//匹配失败 }void Virus_detection(){char Vir[600];//用来存放病毒DNA序列 int num,f=0;  		//用来记录有几组匹配数据HString Virus,Person,temp; //主串Person,模式串Virus,中转辅助串tempifstream inFile("病毒感染检测输入数据.txt"); //设置输入文件地址,文件要在同级目录保存ofstream outFile("病毒感染检测输出结果.txt");//设置输出文件地址(也可以屏幕输出)inFile>>num;		//读取待检测的任务数while(num--) 	//依次检测每对病毒DNA和人的DNA是否匹配{inFile >> Virus.ch >> Person.ch;//读取病毒和人的DNA strcpy(Vir,Virus.ch);//将病毒DNA储存在Vir中,用于输出 Virus.len = strlen(Virus.ch);//求病毒DNA长度 Person.len = strlen(Person.ch);//求人DNA长度 f=check(Virus,Person,Virus.len,Person.len);//检测是否匹配 if(f) cout<<Vir<<"      "<<Person.ch<<"      "<<"YES"<<endl;//匹配输出YES else cout<<Vir<<"      "<<Person.ch<<"      "<<"NO"<<endl;//不匹配输出NO }}int main(){Virus_detection();return 0;}


http://www.ppmy.cn/news/729389.html

相关文章

python病毒扫描器_python 使用ClamAV实现病毒扫描(pyClamad)

首先安装clamav yum install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd -y sed -i s/^Example/#Example/g /etc/freshclam.conf #必须关闭Example 否则启动会失败 sed…

中国超级计算机有多重,炸裂!地球上的所有DNA加起来有多重?

据国外媒体报道&#xff0c;据科学家估计&#xff0c;地球上所有DNA分子加起来&#xff0c;足以装满十亿个集装箱。如果将地球上所有生命体——从细菌到鲸鱼——乘以它们细胞的数量(细胞中包含一个或多个DNA分子)&#xff0c;所有的基因物质总重量将达到500亿吨。 科学家还认为…

病毒变种--C语言练习

病毒变种 病毒DNA可以表示成由一些字母组成的字符串序列&#xff0c;且病毒的DNA序列是环状的。例如&#xff0c;假设病毒的DNA序列为baa&#xff0c;则该病毒的DNA序列有三种变种&#xff1a;baa,aab,aba。试编写一程序&#xff0c;对给定的病毒DNA序列&#xff0c;输出该病毒…

Java 病毒感染检测

病毒感染检测 (15分) 人的DNA和病毒DNA均表示成由一些字母组成的字符串序列。然后检测某种病毒DNA序列是否在患者的DNA序列中出现过&#xff0c;如果出现过&#xff0c;则此人感染了该病毒&#xff0c;否则没有感染。例如&#xff0c;假设病毒的DNA序列为baa&#xff0c;患者1…

matlab建模DNA双链,PPT绘制科研图形—DNA双链、分子细胞模型

原标题&#xff1a;PPT绘制科研图形—DNA双链、分子细胞模型 PPT绘制DNA双链 1用矩形工具画一个矩形如下&#xff0c;线条颜色设置为无&#xff0c;填充色如下图蓝色 2选中矩形框&#xff0c;选择菜单栏的“格式—— 编辑形状——转换为任意多边形” 3这个时候再看下“编辑形状…

宏病毒组系列4|宏病毒组富集技术详解

病毒可以说是地球上最大的生物实体之一&#xff0c;但是由于他们具有形态小&#xff0c;遗传物质进化快等的特点&#xff0c;因而不能像细菌、古菌等微生物一样有系统的发育标记&#xff0c;这为其鉴别增加了一定的难度。此外&#xff0c;对于病毒与宿主之间相互关系的研究&…

病毒感染监测

描述 医学研究者最近发现了某些新病毒&#xff0c;通过对这些病毒的分析&#xff0c;得知它们的DNA序列都是环状的。现在研究者收集了大量的病毒DNA和人的DNA数据&#xff0c;想快速检测出这些人是否感染了相应的病毒。为方便研究&#xff0c;研究者将人的DNA和病毒的DNA均表示…

分子生物学 第四章 DNA的生物合成

文章目录 第四章 DNA的生物合成第一节 DNA复制的一般特征1 DNA的半保留复制2 DNA的双向复制3 DNA的半不连续复制 第二节 DNA复制的酶学1 DNA聚合酶1.1 原核生物DNA pol1.1.1 DNA pol I1.2 DNA pol II1.3 DNA pol III1.4 其它的DNA pol 1.2 真核生物DNA聚合酶1.2.1 DNA pol α …