先放題吧...
給定乙個字串(模式串)和一些待查詢的字串,求每個待查詢字串在模式串中出現的次數(可重疊)
測試資料有多組(測試組數 <= 5),
第一行包括乙個字串p,長度不超過105,且非空串
第二行包括乙個整數n,代表待查詢的字串數量 (1 <= n <= 5)
接下來的n行,每一行包括乙個待查詢的字串,其長度不超過50,且非空串
對於每組測試資料,
輸出每個待查詢字串出現的次數,
具體輸出見樣例
aabbcc
aabb
ccababab
abaaa:1
bb:1
cc:1
aba:2
按照大佬們的意思這是kmp演算法的模板題...今天下午之前我連什麼是kmp都還不知道...啃了一下午的kmp。
這個大佬有關kmp演算法的部落格寫得非常好:我這個菜雞看了好久才弄懂)
然後我的**也還是有直接抄大佬的(等我之後重新做再更新完全是自己寫的吧(捂臉))。
**如下:
#include #include using namespace std;
int next[1001];
void get_next(string patten)
}int kmp_getcount(string target,string patten)
{ int n=target.length();
int m=patten.length();
get_next(patten);
int count=0;
int i=0,j=0;
while(i>target){
int n;
cin>>n;
while(n--){
cin>>patten;
int count=kmp_getcount(target,patten);
cout《大佬們輕噴。
KMP演算法入門
kmp演算法的核心,是乙個被稱為部分匹配表 partial match table 的陣列。我覺得理解kmp的最大障礙就是很多人在看了很多關於kmp的文章之後,仍然搞不懂pmt中的值代表了什麼意思。這裡我們拋開所有的枝枝蔓蔓,先來解釋一下這個資料到底是什麼。對於字串 abababca 它的pmt如下...
一臉???演算法之KMP演算法詳解
本人在學習資料結構kmp演算法這節內容時,也是花費了好長時間才弄懂,期間一直是懵的很吶!不知道大家有沒有這麼個感覺,好像有點明白kmp演算法的思想,但是再面對那幾行簡短的 是還是有點不知其所以然的感覺。所以呢,我就想給大家講解一下kmp演算法的思想及 的實現過程,讓大家少走彎路,早日豁然開朗。簡單模...
KMP演算法入門講解
字串匹配問題。假設文字是乙個長度為 n 的字串 t 模板是乙個長度為 m 的字串 p 且 m leq n 需要求出模板在文字中的所有匹配點 i 即滿足 t i p 0 t i 1 p 1 t m 1 p m 1 的非負整數 i 注意字串下標從0開始 如圖所示,p 在 t 中有且只有乙個匹配點,即位置...