目录
实验目的
- 掌握字符串的顺序存储表示方法。
- 掌握字符串模式匹配算法BF算法的实现。
实验内容(题目)
医学研究者最近发现了某些新病毒,通过对这些病毒的分析,得知它们的DNA序列都是环状的。现在研究者已收集了大量的病毒DNA和人的DNA数据,想快速检测出这些人是否感染了相应的病毒。为了方便研究,研究者将人的DNA和病毒DNA均表示成由一些字母组成的字符串序列,然后检测某种病毒DNA序列是否在患者的DNA序列中出现过,如果出现过,则此人感染了该病毒,否则没有感染。例如,假设病毒的DNA序列为baa,患者1的DNA序列为aaabbba,则感染;患者2的 DNA序列为babbba,则未感染。(注意:人的DNA序列是线性的,而病毒的DNA序列是环状的。)
实验环境
(1)软件系统
操作系统:Windows 10
编程环境:Embarcadero Dev-C++ 6.3,包含GNU GCC编译器和GDB调试器
(2)硬件系统
CPU:Intel(R) Core(TM) i7-10875H CPU @ 2.30GHz
内存:16GB
硬盘:500GB SSD
程序代码
#include <stdio.h> // 标准输入输出头文件
#include <string.h> // 字符串操作头文件
#define YES 1
#define NO 0
// 全局变量定义
char V[20]; // 存储病毒DNA序列的数组
char D[20]; // 存储人类DNA序列的数组
// 使用暴力匹配算法进行字符串匹配的函数
int BF(char *D, char *V) {
int i = 0, j = 0; // i是主字符串的索引,j是模式字符串的索引
// 遍历主字符串D和模式字符串V
while (i < strlen(D)