luogu3375 kmp算法模板
2017-10-06 19:07
337 查看
#include <iostream> #include <cstring> #include <cstdio> using namespace std; char a[1000005], b[1005]; int lena, lenb, nxt[1005]; void makenext(){ int k=0; for(int i=2; i<=lenb; i++){ while(k && b[i]!=b[k+1]) k = nxt[k]; if(b[i]==b[k+1]) nxt[i] = ++k; } } void kmp(){ int k=0; for(int i=1; i<=lena; i++){ while(k && a[i]!=b[k+1]) k = nxt[k]; if(a[i]==b[k+1]) k++; if(k==lenb) printf("%d\n", i-lenb+1); } } int main(){ scanf("%s", a+1); scanf("%s", b+1); lena = strlen(a+1); lenb = strlen(b+1); makenext(); kmp(); for(int i=1; i<=lenb; i++) printf("%d ", nxt[i]); return 0; }
相关文章推荐
- Luogu 3375 【模板】KMP字符串匹配(KMP算法)
- 【模板】字符串匹配KMP算法
- Luogu 2801 教主的魔法 | 分块模板题
- KMP算法(——模板习题与总结)
- Luogu-P3372 (Lazy_tag 线段树模板)
- 洛谷 3375_[模板]KMP字符串匹配_KMP
- kmp算法模板
- luogu3376 【模板】网络最大流
- [Luogu 3919]【模板】可持久化数组(可持久化线段树/平衡树)
- kmp算法模板
- luogu3796 【模板】AC自动机(加强版)
- kmp算法模板
- KMP算法模板
- [模板]kmp算法
- Luogu 3375(KMP)
- [luogu3373][模板]线段树 2(线段树)
- KMP算法模板
- 【luogu3372】模板 线段树1
- 字符串_KMP算法(求next[]模板 hdu 1711)
- HDU1711(KMP算法模板题)