首页 > 其他 > 详细

蒟蒻修炼计划-KMP 模板

时间:2016-05-17 09:47:58      阅读:134      评论:0      收藏:0      [点我收藏+]
 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 模板

原文:http://www.cnblogs.com/AireenYe/p/5500222.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!