蒟蒻修炼计划-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]动物园