每日一題之 hiho1015 KMP演算法

2021-08-26 20:27:34 字數 968 閱讀 4955

輸入

第一行乙個整數n,表示測試資料組數。

接下來的n*2行,每兩行表示乙個測試資料。在每乙個測試資料中,第一行為模式串,由不超過10^4個大寫字母組成,第二行為原串,由不超過10^6個大寫字母組成。

其中n<=20

輸出 對於每乙個測試資料,按照它們在輸入中出現的順序輸出一行ans,表示模式串在原串中出現的次數。

樣例輸入

5 ha

hahaha

wqn

wqn

ada

adadada

bababb

bababababababababb

dad

addaadaaddaaadaad

樣例輸出

3 1

3 1

0思路:

kmp模板題,這篇部落格講的比較細

這裡主要說一下如何理解next陣列,next陣列主要是對於模式串而言的,且除了當前字元之外的子串的字首和字尾的匹配的字元個數。

#include 

#include

#include

using

namespace

std;

const

int maxn = 1e6;

int next[maxn]; //next陣列的含義是,除開當前字元外(在kmp中表示字元失配的那個位置),子串的字首和字尾相同字元的個數。

void getnext(string p)

else

}}int kmp(string s, string p)

//cout << i << " " << j << endl;

// if (j == plen)

// else

return res;

}int main()

return

0;}

每日一題之 hiho1744 hohahola

描述 有一種叫作hohahola的飲料,售價是x元一瓶。小hi非常喜歡這種飲料,但是他現在身無分文。不過小hi有n張優惠券,買hohahola時每瓶最多使用一張優惠券,可以使該瓶 減少y元。y x 同時優惠券可以 小hi每 一張優惠券可以獲得z元。請你幫小hi計算通過 若干優惠券,他最多可以買多少瓶...

每日一題之 hiho1304 24點

週末,小hi和小ho都在家待著。在收拾完房間時,小ho偶然發現了一副撲克,於是兩人考慮用這副撲克來打發時間。小ho 玩點什麼好呢?小hi 兩個人啊,不如來玩24點怎麼樣,不靠運氣就靠實力的遊戲。小ho 好啊,好啊。經過若干局遊戲之後 小ho 小hi,你說如果要寫個程式來玩24點會不會很複雜啊?小hi...

每日一題之 hiho197 逆序單詞

描述 在英文中有很多逆序的單詞,比如dog和god,evil和live等等。現在給出乙份包含n個單詞的單詞表,其中每個單詞只出現一次,請你找出其中有多少對逆序單詞。輸入 第1行 1個整數,n,表示單詞數量。2 n 50,000。第2.n 1行 每行1個單詞,只包含小寫字母,每個單詞長度不超過16個字...