蒟蒻修炼计划-KMP 模板

Posted Aireen Ye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蒟蒻修炼计划-KMP 模板相关的知识,希望对你有一定的参考价值。

 1 #include<cmath>
 2 #include<queue>
 3 #include<stack>
 4 #include<cstdio>
 5 #include<vector> 
 6 #include<string>
 7 #include<cstring>
 8 #include<cstdlib>
 9 #include<iostream>
10 #include<algorithm>
11 #define N 10000001
12 using namespace std;
13 int next[N],m,n;
14 char a[N],b[N];
15 inline void kmp(){
16     next[0]=-1;
17     for(int i=1,j=0;i<m;i++,j++){
18         while(j!=-1&&b[i]!=b[j])
19             j=next[j];
20         next[i+1]=j+1;
21     }
22     for(int i=0,j=0;i<n;i++,j++){
23         while(j!=-1&&a[i]!=b[j]) 
24             j=next[j];
25         if(j+1==m) printf("%d\n",i-j+1); 
26     }
27 }
28 inline void init(){
29     scanf("%s%s",&a,&b);
30     n=strlen(a);m=strlen(b);
31     kmp();
32 }
33 int main(){
34     freopen("kmp.in","r",stdin);
35     freopen("kmp.out","w",stdout);
36     init();
37     fclose(stdin);
38     fclose(stdout);
39     return 0;
40 }

 

以上是关于蒟蒻修炼计划-KMP 模板的主要内容,如果未能解决你的问题,请参考以下文章

[蒟蒻修炼计划][学习笔记]数论

[蒟蒻修炼计划][学习笔记]数论

[蒟蒻修炼计划][bzoj3670][Noi2014]动物园

[蒟蒻修炼计划][cf621E]Wet Shark and Blocks

辣鸡蒟蒻Klaier的一些计划

Noip蒟蒻专用模板