擴充套件kmp

2021-10-07 08:21:08 字數 988 閱讀 4979

網上有詳細講解,我個人覺得kmp比擴充套件kmp要難看的,擴充套件kmp主要用來解決主串的所有字尾與子串t最長的公共字首問題,擴充套件kmp也能找到子串在主串中是否出現,因為如果長度為子串t的長度,那麼肯定就能說明子串t在主串**現過。

借鑑了部落格

corporate identity這道題的做法,順便學習了一下擴充套件kmp,其實這道題暴力也能過的,只不過好麻煩,字串題碼力就是大。

#include

#include

using

namespace std ;

const

int maxn =

1e6+10;

int nt[maxn]

,ex[maxn]

;char s[

5000][

300]

;char ss[maxn]

;void

getnext

(char

* s)}}

intexkmp

(char

*s,char

*t)if

(ex[i]

==n2)

return1;

}return0;

}void

quchar

(char

*s,char

*ss,

int l,

int r)

intmain()

}int mx =

0,l,r;

int len =

strlen

(s[pos]);

for(

int i=

0;iif(

!f)else

if(j-i+

1==mx)}}

}}}}

if(mx==0)

printf

("identity lost\n");

else

}}

KMP 擴充套件KMP

本文將不斷加入例題,稍安勿躁,今天的總結爭取9 30寫完.kmp,中文名字叫字串匹配,用於解決一類字串匹配問題.先下一些定義 首先我們先想一想 nxt i 對於求解問題有怎樣的幫助.我們對於每乙個 t i s 1 的位置都匹配一次,這樣子複雜度為 theta n m 的.考慮在暴力匹配中其實我們不一...

擴充套件kmp

出自 2 i k l 1 p k,即i l p。這時,首先可以知道a i.p 和b 0.p i 是相等的 因為a i.p b i k.p k 而i k l 1 p k,由b 0.l 1 b i k.i k l 1 可得b 0.p i b i k.p k 即a i.p b 0.p i 然後,對於a p...

擴充套件KMP

拖了這麼久,終於打出擴充套件kmp了。並不長,但是細節很多。最好把模板背下來,實在背不下來就根據原理去推。相比於kmp來說擴充套件kmp的應用範圍更廣,更靈活。它的ext i 與kmp的next i 的區別就是next i 表示長度最大的一段s i next i 1 i t 1 next i ext...