BF和KMP演算法

2021-08-11 06:47:32 字數 876 閱讀 5661

/***字串匹配演算法***/

#include

#include

using namespace std;

#define ok 1

#define error 0

#define overflow -2

typedef int status;

#define maxstrlen 255     //使用者可在255以內定義最長串長

typedef struct sstring;

status strassign(sstring &t, char *chars) }

//填寫4.1 bf演算法 並增加計算比較次數

int index_bf(sstring s, sstring t, int pos)

else

n++; }

cout<<"比較次數為:"else return 0; }

//演算法4.3 計算next函式值

void get_next(sstring t, int next)

else

j = next[j];

}//get_next

//演算法4.2 kmp演算法,增加計算比較次數

int index_kmp(sstring s, sstring t, int pos, int next)

else

j = next[j];

n++;

}// 模式串向右移動

cout<<"比較次數為:"< t.length) // 匹配成功

return i - t.length;

else

return 0;

}//index_kmp

int main()

BF演算法和KMP演算法

今天資料結構學習了兩個字串匹配演算法,bf演算法和kmp演算法。課本講的過於籠統,不能理解kmp演算法,因此在網上找些資料後整理筆記如下。字串匹配演算法就是在文字串中匹配模式串。bf brute force 演算法即暴力演算法。從第乙個字元開始匹配,每當匹配失敗時,模式串向右滑動一位。最後返回第一次...

字元 BF 和 KMP演算法

kmp演算法是一種改進的字串匹配演算法,由d.e.knuth與v.r.pratt和j.h.morris同時發現,因此人們稱它為克努特 莫里斯 普拉特操作 簡稱kmp演算法 在介紹kmp演算法之前,先介紹一下bf演算法。一.bf演算法 bf演算法是普通的模式匹配演算法,bf演算法的思想就是將目標串s的...

BF演算法與KMP演算法

using system namespace kmp else count if j lenb 1 return i lenb else return 0 stathread static void main string args lenb p1.length,p2.length reval km...