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

kmp模版题 hdu2087

时间:2015-10-06 14:04:15      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 
 5 using namespace std;
 6 
 7 int m,n;
 8 char s[1010];
 9 char t[1010];
10 int next1[1010];
11 
12 void getnext()
13 {
14     next1[0]=-1;
15     int i=0;
16     int j=-1;
17     while(i<m)
18     {
19         while(j!=-1&&t[i]!=t[j])
20         {
21             j=next1[j];
22         }
23         next1[++i]=++j;
24     }
25 }
26 
27 int kmp()
28 {
29     int ans=0;
30     int i=0;
31     int j=0;
32     getnext();
33     while(i<n)
34     {
35         while(j!=-1&&s[i]!=t[j])
36         {
37             j=next1[j];
38         }
39         i++;
40         j++;
41         if(j>=m)
42         {
43             ans++;
44             j=0;
45         }
46     }
47     return ans;
48 }
49 
50 int main()
51 {
52     while(scanf("%s",&s)!=EOF)
53     {
54         if(s[0]==#)
55             break;
56         scanf("%s",&t);
57         n=strlen(s);
58         m=strlen(t);
59         cout<<kmp()<<endl;
60     }
61     return 0;
62 }
View Code

 

kmp模版题 hdu2087

标签:

原文地址:http://www.cnblogs.com/wsruning/p/4857027.html

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