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

HDU1711_Number Sequence__kmp

时间:2015-03-01 17:01:46      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

水题

 1 #include<cstdio>
 2 #include<cstring>
 3 const int maxn=1e6+5;
 4 const int maxm=1e4+5;
 5 int p[maxm];
 6 int t[maxn];
 7 int f[maxm];
 8 int n,m;
 9 void getfail()
10 {
11     f[0]=f[1]=0;
12     for(int i=1;i<m;i++){
13         int j=f[i];
14         while(j&&p[j]!=p[i])
15             j=f[j];
16         f[i+1]=p[i]==p[j]?j+1:0;
17     }
18 }
19 void kmp()
20 {
21     getfail();
22     int j=0;
23     for(int i=0;i<n;i++){
24         while(j&&p[j]!=t[i])
25             j=f[j];
26         if(p[j]==t[i])
27             j++;
28         if(j==m){
29             printf("%d\n",i-m+2);
30             return ;
31         }
32     }
33     printf("-1\n");
34     return ;
35 }
36 int main()
37 {
38     int test;
39     scanf("%d",&test);
40     while(test--){
41         scanf("%d%d",&n,&m);
42         for(int i=0;i<n;i++)
43             scanf("%d",&t[i]);
44         for(int i=0;i<m;i++)
45             scanf("%d",&p[i]);
46         kmp();
47     }
48     return 0;
49 }

 

HDU1711_Number Sequence__kmp

标签:

原文地址:http://www.cnblogs.com/-maybe/p/4307224.html

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