演算法小白KMP入門(捂臉)

2021-08-22 06:13:37 字數 977 閱讀 7405

先放題吧...

給定乙個字串(模式串)和一些待查詢的字串,求每個待查詢字串在模式串中出現的次數(可重疊)

測試資料有多組(測試組數 <= 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 中有且只有乙個匹配點,即位置...