KMP練手 模板

2021-08-18 16:24:03 字數 957 閱讀 4794

實驗三 kmp演算法

time limit:1000ms

memory limit:65536k

total submissions:1473

accepted:751

description

給定乙個源串s和n個子串stri。判斷stri是否是s的子串。

input

輸入資料有多組,對於每組測試資料 第一行源串s(s長度小於100000),第二行乙個整數n, 表示下面有n個查詢,每行乙個字串str。

output

若str是s的子串,輸出 yes 否則輸出 no

sample input

acmicpczjnuduzongfei 3

icpc du

liusample output

yes

yes

nohint

因為串的長度比較長,超過256,因此本題的串不適合用定長順序儲存表示來儲存串,sstring的長度放在第乙個元素,這個元素佔乙個位元組,最大255.

題目非常簡單,就是kmp的裸題,直接套模板即可,需要注意的是,如果題目出現了一些莫名其妙的編譯錯誤,那麼就要注意了,可能是自己定義的變數名與系統名衝突了,例如next和next,就只能使用next,如果用next作為陣列名會ce的。

#include #include using namespace std;

const int maxn = 1e5+7;

int next[100007];

char str[maxn],sub[maxn];

void makenext()

}int kmp()

return -1;

}int main()

}

KMP演算法(模板)

time limit 1000ms memory limit 65536k 有疑問?點這裡 給定兩個字串string1和string2,判斷string2是否為string1的子串。輸入包含多組資料,每組測試資料報含兩行,第一行代表string1 長度小於1000000 第二行代表string2 長...

KMP演算法模板

在文字t 1.n 中找到某個模式p 1.m 所有出現的位置被稱作字串匹配問題 m n p3375 模板 kmp字串匹配 這道題在洛谷上的評級居然是普及 普及?qvq 實現起來還是比較簡單的,只不過有很多細節可以有很多種寫法,看別人的 容易凌亂。理解起來比較困難的部分是如何get next 不建議初學...

kmp演算法模板

字串匹配樸素演算法 傳統的字串匹配 效率較低 計算主串中模式串出現的次數 include include using namespace std int index string s,string t else if j lent return count int main kmp演算法 下標從零開...