擴充套件KMP 記錄學習過程

2021-10-02 18:24:44 字數 718 閱讀 9671

首先看了幾篇部落格,發現還得耐下心來理解,動手畫圖 ,才能理解倆字串還有陣列之間神奇的關係

這篇部落格圖不錯:

/*擴充套件kmp */

/*一開始假設求出了 next陣列,然後去求extend陣列,然後方法一樣

next陣列可以自己求自己*/

#include#include#define s 1000

#define t 1000

char s[s],t[t];

/* 母串 子串*/

int extend[s],nex[t],p,a;/*extend[a]=p p最大值 */

/* extend[i]陣列 :s母串的 i開頭字尾串 與 t子串的最長公共字首

nex[i] 陣列:t子串以 i開頭字尾串 與 t子串的最長公共字首

*/void getnext()

else

extend[i]=p-i;

}// for(int i=0;i// printf("%d ",extend[i]);

// printf("\n");

// for(int i=0;i// printf("%d ",nex[i]);

// printf("\n");

return ;

}int main()

return 0;

}

KMP學習記錄

注 模式串指我們要找是不是出現的串,主串指我們匹配的物件。一種由knuth d.e.knuth morris j.h.morris 和pratt v.r.pratt 三人設計的線性時間字串匹配演算法。其實就是利用已經匹配過的字元,也就是在中間的每乙個位置,就斷開了。利用前面的部分去設定,下次尋找的點...

擴充套件kmp初學習

參考部落格 問題定義 給出兩個字串s和t 長度分別是n和m 下標從0開始,定義extend i 表示s i s n 1 與t的最長公共字首的長度,求出所有的extend i 如下表i0 1234 567s aaaa abbb taaa aacextend i 54 3210 00如果某個extend...

擴充套件KMP模板(學習)

乙個算是冷門的演算法 在競賽上 不過其演算法思想值得深究。kmp的演算法思想,具體可以參考這篇 trie樹 字典樹 擴充套件kmp的模板問題 給你兩個字串s,t,長度分別為n,m。請輸出s的每乙個字尾與t的最長公共字首。雜湊是不可能的,這輩子都不可能的。mathcalac自動機?好像更不可做了。我們...