kmp演算法就是字串匹配演算法,在乙個字串t中查詢字串p的位置。
la3026 週期#include.h>
using namespace std;
const int maxn=
1e6+
10;
int f[maxn]
;char t[maxn]
,p[maxn]
;void
getfail()
}void
find()
} int main()
find()
;// for(int i=0;i<=strlen(p);i++) printf("%d ",f[i]);
}
給出乙個字串s,求出它的每個字首的最短迴圈節。換句話說就是對於每個i,求乙個最大的整數k>1,使得s的前i個字元組成的字首是某個字串重複k次得到。輸出所有存在k的i和對應的k.
比如樣例:aabaabaabaab 只有當i=2,6,9,12時存在k,且分別為2,2,3,4。
sample input
3aaa
12aabaabaabaab
0sample output
test case #1
2 23 3
test case #2
2 26 2
9 312 4
#include.h>
using namespace std;
const int maxn=
1e6+10;
int f[maxn]
;char p[maxn]
;int main()
for(int i=
2;i<=
strlen
(p);i++)}
}
KMP模板 例題
文章 假設主串 s s 1 s 2 s 3 s n 模式串 t t 1 t 2 t 3 t m 現在我們假設主串第i 個字元與模式串的第j j m 個字元 失配 後,主串第i 個字元與模式串的第k k主串 s 1 s i j 1 s i 1 s i 匹配 模式串 t 1 t j 1 t j 由此,可...
字典樹模板及例題
字典樹 time limit 1000ms memory limit 65536kb problem description 遇到單詞不認識怎麼辦?查字典啊,已知字典中有n個單詞,假設單詞都是由小寫字母組成。現有m個不認識的單詞,詢問這m個單詞是否出現在字典中。input 含有多組測試用例。第一行輸...
KMP詳細解釋及KMP演算法模板
kmp是什麼,kmp解決什麼型別的問題 kmp全稱為knuth morris pratt演算法,是一種高效的字串匹配演算法,尋找乙個字串中是否包含另乙個字串,例如 char s ababababcab char p ababc s為模板串 主串 p為子串,在s中找到p的位置 暴力匹配演算法 o n ...