KMP模板题,做了一天,泪奔啊~~~
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 |
#include <stdio.h>#include <string.h>int a[1000005],b[10005];int next[10005];int n,m,t;void
getNext(){ int
j,i; j=0; i=-1; next[0]=-1; while(j<m-1) { if(i==-1||b[i]==b[j]) { j++; i++; next[j]=i; } else
i=next[i]; }}int
KMPMatch(){ int
i,j; j=0; i=0; while(i<n&&j<m) { if(j==-1||a[i]==b[j]) { j++; i++; } else
j=next[j]; } if(j>=m) return
i-m+1; else
return -1;}int
main(){ int
i,j; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=0;i<n;i++) { scanf("%d",&a[i]); } for(i=0;i<m;i++) { scanf("%d",&b[i]); } getNext(); printf("%d\n",KMPMatch()); } return
0;} |
hdu 1711 Number Sequence(KMP),布布扣,bubuko.com
原文:http://www.cnblogs.com/ccccnzb/p/3575246.html