C 資料結構 DS串應用 KMP演算法

2021-08-28 23:57:08 字數 997 閱讀 8227

學習kmp演算法,給出主串和模式串,求模式串在主串的位置

演算法框架如下,僅供參考

第乙個輸入t,表示有t個例項

第二行輸入第1個例項的主串,第三行輸入第1個例項的模式串

以此類推

第一行輸出第1個例項的模式串的next值

第二行輸出第1個例項的匹配位置,位置從1開始計算,如果匹配成功輸出位置,匹配失敗輸出0

以此類推3

qwertyuiop

tyu

aabbccdd

ccc

aaaabababac

abac

-1 0 0 5

-1 0 1 0

-1 0 0 1 8

#include #include using namespace std;

class mystring

if(p[i - 1] == p[temp])

next[i] = temp;}}

int kmpfind(string p, int pos, int next)

else

if(j == -1)

}if(p[j] == '\0')

return i - j;

else

return -1;

}public:

mystring()

mystring(string s)

~mystring()

void setval(string sp)

int kmpfindsubstr(string p, int pos)

cout << endl;

int v = -1;

v = kmpfind(p, 0, next);

delete next;

return v;

}};

int main()

return 0;

}

DS串應用 KMP演算法

題目描述 學習kmp演算法,給出主串和模式串,求模式串在主串的位置 演算法框架如下,僅供參考 輸入第乙個輸入t,表示有t個例項 第二行輸入第1個例項的主串,第三行輸入第1個例項的模式串 以此類推 輸出第一行輸出第1個例項的模式串的next值 第二行輸出第1個例項的匹配位置,位置從1開始計算,如果匹配...

資料結構kmp演算法應用(c )

題目描述 根據kmp演算法的next陣列值,推斷模式字串。假設模式字串中只存在0,1兩種字元。給出首字元和next陣列。請輸出模式字串。如果next陣列不合法則輸出error input format 先輸入模式字串首字元0或者1,然後輸入尾字元0或者1 再輸入 模式字串長度n,n 30 最後輸入n...

資料結構 KMP演算法

求串的模式值next n 定義 1 next 0 1 意義 任何串的第乙個字元的模式值規定為 1。2 next j 1 意義 模式串t中下標為j的字元,如果與首字元相同,且 j的前面的 1 k個字元與開頭的 1 k個字元不等 或者相等但t k t j 1 k 如 t abcabcad 則next 6...