第1关:案例4_1 病毒感染检测

#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,j = 1;while(i <= L1.length && j <= L2_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算法4.5)相关推荐

  1. 基于kmp字符串模式配算法的病毒感染检测问题

    本文记录了数据结构习题解析与实验指导(李冬梅)的实验4. 以下是实验内容 文章目录 1 问题描述 2 基本思想 3 KMP算法 4 Kmp代码主体部分 5 全部代码 6 nextval数组 1 问题描 ...

  2. 基于字符串模式匹配算法的病毒感染检测问题(KMP算法)

    头文件(tou.h): void get_next(char T[], int next[]);int Index_KMP(char S[], char T[]);void move1(char a[ ...

  3. 使用 OpenCV与 HAAR 级联算法进行人脸检测和人脸识别

    AI人脸识别是一种从数字图像或视频帧中识别或验证人脸的技术.人类可以毫不费力地快速识别面部.这对我们来说是一项轻松的任务,但对计算机来说却是一项艰巨的任务.因为存在各种复杂性,例如低分辨率.遮挡.光照 ...

  4. frida辅助分析xx牛登录算法frida辅助分析xx牛登录算法

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 春风十里扬州路,卷上珠帘总不如. ...

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

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

  6. AI专家一席谈:复用算法、模型、案例,AI Gallery带你快速上手应用开发

    摘要: 华为云社区邀请到了AI Gallery的负责人严博,听他谈一谈AI Gallery的设计初衷.经典案例以及未来规划. 本文分享自华为云社区<AI专家一席谈:复用算法.模型.案例,AI G ...

  7. YOLODet最新算法的目标检测开发套件,优化到部署

    向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习  公众号:datayx YOLODet-PyTorch是端到端基于pytorch框架复现yolo最新算法的目标检测开 ...

  8. 基于Adaboost算法的人脸检测分类器!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:陈锴,Datawhale优秀学习者,中山大学数学系 人脸检测属于计 ...

  9. 【百度飞浆】RCNN系列算法优化策略与案例

    RCNN系列算法优化策略与案例 目录 1 两阶段检测进阶模型介绍 2 两阶段检测进阶模型优化策略 3 工业应用:铝压铸件质检 目录 1 两阶段检测进阶模型介绍 2 两阶段检测进阶模型优化策略 3 工业 ...

最新文章

  1. C语言初步学习(适合与学习过C++和java的童鞋)
  2. html选择器_HTML的id选择器类选择器
  3. vue中的v-model原理,与组件自定义v-model
  4. 吴晓然:实时通信需要Codec和网络模块结合
  5. 新项目上传到码云托管
  6. linux日志文件优缺点,Linux日志文件总结
  7. Traefik-kubernetes 初试
  8. pytorch如何增加维度_Pytorch中的LSTM:如何添加/更改序列长度维度?-问答-阿里云开发者社区-阿里云...
  9. 华为笔试题 2022.3.30
  10. 利用MentoHUST在路由器上使用锐捷认证来共享校园网
  11. ubuntu安装中文输入法fcitx
  12. 计算机桌面文件为何不能剪贴,复制粘贴,详细教您电脑复制粘贴不能用了怎么解决...
  13. 作文 我眼中的计算机1000字,我眼中的自己作文范文1000字(精选6篇)
  14. 如何在庞大的ip地址库中快速定位到对应的ip地址所对应的归属地?
  15. ERWIN中的一对多标识关系和一对多非标识关系
  16. TOF相机 Realsense L515 与 Ipad pro Lidar Camera 对比
  17. 无线联网功能硬件模块无法拆除的计算机禁止,2021年保密知识竞赛抢答题库及答案(共120题).docx...
  18. Python lambda 介绍
  19. SpringBoot之整合Redis分析和实现-基于Spring Boot2.0.2版本
  20. Percona和MariaDB对比

热门文章

  1. 二维偏序/数点——学习笔记
  2. linux 让程序在服务器保持后台运行
  3. 电商卖家做微营销是该做微信个人号还是公众号?
  4. NPOI设置单元格宽和高
  5. 苹果手机没声音了显示耳机模式_降噪耳机哪家强?苹果Apple,1MORE,OPPO对决(兼聊索尼、Bose)...
  6. java与C#之间服务互相调用
  7. C语言探索之旅 | 第二部分第六课:创建你自己的变量类型
  8. Keil嵌入式开发环境下完成一个基于STM32汇编程序的编写
  9. Android 自定义可拖拽悬浮按钮
  10. [BJDCTF2020]伏羲六十四卦