码迷,mamicode.com
首页 > 其他好文 > 详细

蒟蒻修炼计划-KMP 模板

时间:2016-05-17 09:51:06      阅读:147      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!