重庆邮电大学数据结构实验三

实验三 基于字符串模式匹配算法的病毒
感染检测问题
一、实验目的
1 、掌握字符串的顺序存储表示方法。
2 、掌握字符串模式匹配算法 BF 算法或 KMP 算法的实现。
二、实验内容
问题描述
医学研究者最近发现了某些新病毒,通过对这些病毒的分析,得知它们的
DNA 序列都是环状的。现在研究者已收集了大量的病毒 DNA 和人的 DNA 数据,
想快速检测出这些人是否感染了相应的病毒。为了方便研究,研究者将人的 DNA
和病毒 DNA 均表示成由一些字母组成的字符串序列,然后检测某种病毒 DNA
序列是否在患者的 DNA 序列中出现过,如果出现过,则此人感染了该病毒,否
则没有感染。例如,假设病毒的 DNA 序列为 baa ,患者 1 DNA 序列为 aaabbba
则感染 ; 患者 2 DNA 序列为 babbba ,则未感染。
注意,人的 DNA 序列是线性的,而病毒的 DNA 序列是环状的。
输入要求
多组数据,每组数据有 1 行,为序列 A B A 对应病毒的 DNA 序列, B
对应人的 DNA 序列。 A B 都为 “0” 时输入结束。
输出要求
对于每组数据输出 1 行,若患者感染了病毒输出 “YES” ,否则输出 “NO” 。输
入样例
abbab abbabaab
baa cacdveabacsd
abe def
0 0
#include <iostream>
using namespace std;
#define MAXSIZE 255

//BF算法
int Index_BF(char S[], char T[], int pos)//从第0位开始
{//返回模式T在主串S中第pos个字符开始第一次出现的位置;若不存在,则返回0
	int i = pos; int j = 0;
	int lenS = strlen(S);
	int lenT = strlen(T);
	while (i < lenS && j < lenT)
	{
		if (S[i] == T[j])
		{
			i++; j++;
		}
		else
		{
			i = i - j + 1; j = 0;
		}
	}
	if (j >= lenT)
		return i - lenT;
	else
		return -1;
}

int main()
{
	int pos = 0; int result = 0;
	char s[MAXSIZE] = {}, t[MAXSIZE] = {};
	char output[MAXSIZE] = {};
	while (true)
	{
		cin >> s; cin >> t;
		if (s[0] == '0' && t[0] == '0')
		{
			cout << output << endl;
			break;
		}
		result = Index_BF(t, s, pos);
		if (result == -1)
		{
			strcat_s(output, "No\n");//字符串拼接
		}
		else
		{
			strcat_s(output, "Yes\n");//字符串拼接
		}
	}
}

有关病毒方面课程的实验内容 实验一 PE结构分析及DOS病毒感染与清除 一、实验目的 1.熟悉PE文件结构 2.掌握DOS系统下.EXE文件病毒感染与清除方法 二、实验要求 1.实验之前认真准备,编写好源程序。 2.实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。 3.不断积累程序的调试方法。 、实验内容 1)手工或编程从user32.dll中获得MessageBoxA的函数地址; 2)查阅资料,结合第2章内容,根据PE结构编写一个小的工具软件,或者用PE Explorer、PEditor、Stud_PE等工具软件查看、分析PE文件格式。针对PE文件格式,请思考:Win32病毒感染PE文件,须对该文件作哪些修改; 3)示例病毒exe_v感染原理及其清除 实验二 Windows病毒分析与防治 一、实验目的 掌握Windows病毒感染与清除方法 二、实验要求 1.实验之前认真准备,编写好源程序。 2.实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。 3.不断积累程序的调试方法。 、实验内容 1)编程实现Immunity病毒; 2)修复被Immunity感染的host_pe.exe 3)编程实现脚本病毒或宏病毒,参考相关章节爱虫/梅丽莎病毒;修复被上述病毒感染的系统 实验 蠕虫/木马的分析与防治 一、实验目的 掌握蠕虫/木马感染与清除方法 二、实验要求 1.实验之前认真准备,编写好源程序。 2.实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。 3.不断积累程序的调试方法。 、实验内容 1)实现“冲击着清除者”病毒; 2)实现远程线程动态嵌入技术的木马并验证; 3)实现木马远程监视/控制; 4)修复被上述病毒感染的系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值