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

2021-10-25 05:35:42 字數 827 閱讀 3380

題目描述

根據kmp演算法的next陣列值,推斷模式字串。

假設模式字串中只存在0,1兩種字元。給出首字元和next陣列。請輸出模式字串。如果next陣列不合法則輸出error

input format

先輸入模式字串首字元0或者1,然後輸入尾字元0或者1

再輸入 模式字串長度n,n<=30

最後輸入n個以 -1,0,起始的整數。

output format

模式字串 或者 error

#include using namespace std;

int kmp(int* next, int f, int l, int n)

else

cur = tmp[next[i] - 1];

} tmp[i - 1] = cur;

} for (int i = 0; i < n - 1; i++)

cout << l;

cout << endl;

deletetmp;

return 0;

}int main()

example

input

1 0 10

-1 0 1 2 3 4 0 1 2 3

output

1111101110

input

1 1 6

-1 0 0 0 0 0

output

100001

input

1 1 6

-1 0 2 0 0 0

output

error

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

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

資料結構 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...

資料結構 KMP演算法

在我的理解,kmp演算法最核心的同時最難理解的是這個next 函式。但是,next 的值是挺好求的,難在哪呢?這個函式難在邏輯。理解起來很費勁,但真的很好用,並且這個函式的結果很好求。例如求模式串t ababaaa 的next j 的函式值 是這樣的,當j 0,next 0 1,對於任何子串,第乙個...