複習 KMP演算法

2022-03-18 00:07:34 字數 586 閱讀 9381

對於kmp演算法的學習,在寒假時我還是搞不太明白,但幾個月之後,對於它的理解又更近了一步。

首先是對於子串的自我匹配,求乙個fail陣列,fail[i]對於字串ss的前ii個字元構成的子串,既是它的字尾又是它的字首的字串中(包括他),最長的長度記作fail[i]

。舉個例子,abcdabc中fail[7]的值就是3。當我們失配的時候,就直接跳到fail[i]所指的值上,這樣效率就提公升很大。

**

#includeusing

namespace

std;

const

int maxn=1e7+7

;int

fail[maxn],show[maxn];

char

s1[maxn],s2[maxn];

intans;

intlen1,len2;

intj;

void

getfail()

} void

kmp()

}}int

main()

for(int i=1;i<=len2;i++)

return0;

}

KMP匹配演算法複習。。

kmp演算法 knuth morris pratt algorithm knuth就是高德納。kmp演算法是從樸素匹配演算法改進而來 就是窮搜匹配。樸素匹配演算法 原串 abcde 模式串 acd 1.將原串和模式串左對齊,然後一位一位比較,直到有乙個字元不匹配 2.發現第二位的b和c不匹配,模式串...

KMP演算法(複習自用)

一直以來學習都有點浮躁,抓著半截就跑,今天學習kmp演算法時,連示例 都沒有讀一遍就開始手擼 根本沒有理解完整正文的意思。最後不僅求next寫錯了,kmp匹配也寫錯了,於是反反覆覆回去看教程,兩三個小時才寫出來。kmp演算法,不管是主演算法還是預處理的next求取,在學習中要深刻把握住兩個不同的下標...

藍橋複習 KMP

在s中尋找p 找到第一次出現的位置 void find next char p else k next k return intkmp char s,char p else j next j if j hp return i j else return 1 在next陣列裡,最後一位是不包括最後乙個...