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

hdu 1711Number Sequence

时间:2016-07-21 14:55:28      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711

数字KMP,原来还能这么用

 1 #include<stdio.h>
 2 int a[1000010],b[10010];
 3 int next[10010];
 4 int n,m;
 5 void getNext()
 6 {
 7     int j,k;
 8     j=0;
 9     k=-1;
10     next[0]=-1;
11     while(j<m)
12     {
13         if(k==-1||b[j]==b[k])
14           next[++j]=++k;
15         else k=next[k];
16     }    
17 }  
18 //返回首次出现的位置 
19 int KMP_Index()
20 {
21     int i=0,j=0;
22     getNext();
23     
24     while(i<n && j<m)
25     {
26         if(j==-1||a[i]==b[j])
27         {
28             i++;
29             j++;
30         }    
31         else j=next[j];
32         
33     }    
34     if(j==m) return i-m+1;
35     else return -1;
36 }      
37 int main()
38 {
39     int T;
40     scanf("%d",&T);
41     while(T--)
42     {
43         scanf("%d%d",&n,&m);
44         for(int i=0;i<n;i++)
45           scanf("%d",&a[i]);
46         for(int i=0;i<m;i++)
47           scanf("%d",&b[i]);
48         printf("%d\n",KMP_Index());
49     }    
50     return 0;
51 }

 

hdu 1711Number Sequence

标签:

原文地址:http://www.cnblogs.com/pter/p/5691434.html

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