(visual studio 2019可运行)
输入及输出要求见《数据结构C语言(第二版)》严蔚敏版
【本文仅用于啥都看不懂还想交作业选手】
//KMP求解基于字符串模式匹配算法的病毒感染检测
#include <stdio.h>
#include<iostream>
#include <string.h>
#define _CRT_SECURE_NO_WARNINGS
#define maxsize 100
using namespace std;
void Nextval(char T[], int* next)//next函数修正
{
int lenT = strlen(T);
int k = -1;//前缀
int j = 0;//后缀
next[0] = -1;
while (j < lenT)
{
if (k == -1 || T[j] == T[k])
{
j++;
k++;
if (T[j] != T[k])
{
next[j] = k;
}
else
{
next[j] = next[k];
}
}
else
{
k = next[k];
}
}
}
int KMP(char S[], char T[])
{
int i, j, lenS, lenT,t[1];
lenS = strlen(S);
lenT = strlen(T);
int re,flag=0;
re = lenT+1;
int next[maxsize];
while (re--)
{
i = 0; j = 0;
for (int m = 0; m < lenT; m++)
{
Nextval(T, next);
while (i < lenS && j <