首页 > 其他 > 详细

HDU 1717

时间:2016-01-27 12:52:59      阅读:173      评论:0      收藏:0      [点我收藏+]

KMP模板题、

直接放代码

 1 #include<cstdio>
 2 #include<cstring>
 3 const int qq=1e6+10;
 4 int next[qq];
 5 int x[qq],y[qq];
 6 int n,m;
 7 int KMP()
 8 {
 9     int i,j;
10     i=j=0;
11     while(i<n){
12         if(j==-1||x[i]==y[j]){
13             ++i;++j;
14         }
15         else
16             j=next[j];
17         if(j==m)
18             return i-m+1;
19     }
20     return -1;     
21 }
22 int main()
23 {
24     int t;scanf("%d",&t);
25     while(t--){
26         scanf("%d%d",&n,&m);
27         for(int k=0;k<n;++k)
28             scanf("%d",&x[k]);
29         for(int k=0;k<m;++k)
30             scanf("%d",&y[k]);
31         int i,j;
32         next[0]=-1;
33         i=0;j=-1;
34         while(i<m){
35             if(j==-1||y[i]==y[j]){
36                 ++i;++j;
37                 next[i]=j;
38             }
39             else
40                 j=next[j];
41         }
42         int ans=KMP();
43         if(ans!=-1)    printf("%d\n",ans);
44         else    printf("-1\n");
45     }
46     return 0;
47 }

 

HDU 1717

原文:http://www.cnblogs.com/sasuke-/p/5162778.html

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