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

KMP

时间:2017-04-20 10:09:32      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:技术分享   opened   sed   class   cst   tps   ext   include   family   

KMP
搞两个链接:1111122222。都讲的特别清晰易懂。

再来个洛谷模板题的链接

最后是代码:

技术分享
 1 #include<cstdio>
 2 #include<cstring>
 3 int lenT,lenP,k;
 4 int next[1001];
 5 char T[1000001],P[1001];
 6 void make_next(){
 7     for(int i=1;i<lenP;i++){
 8         while(k&&P[i]!=P[k])
 9             k=next[k-1];
10         if(P[i]==P[k])
11             k++;
12         next[i]=k;
13     }
14 }
15 int kmp(){
16     k=0;
17     for(int i=0;i<lenT;i++){
18         while(k&&P[k]!=T[i])
19             k=next[k-1];
20         if(P[k]==T[i])
21             k++;
22         if(k==lenP)
23             printf("%d\n",i-lenP+2);
24     }
25 }
26 int main(){
27     scanf("%s",T);
28     scanf("%s",P);
29     lenT=strlen(T);
30     lenP=strlen(P);
31     make_next();
32     kmp();
33     for(int i=0;i<lenP;i++)
34         printf("%d ",next[i]);
35     return 0;
36 }
View Code

完了

KMP

标签:技术分享   opened   sed   class   cst   tps   ext   include   family   

原文地址:http://www.cnblogs.com/jsawz/p/6737091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!