/***字串匹配演算法***/
#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...