首先看了幾篇部落格,發現還得耐下心來理解,動手畫圖 ,才能理解倆字串還有陣列之間神奇的關係
這篇部落格圖不錯:
/*擴充套件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自動機?好像更不可做了。我們...