Hdu 1711 KMP Template title//paste a KMP template bar ~ ~ ~ #include <cstdio> #include <cstring> #include <algorithm> #include < iostream>using namespace Std;const int max_n = 1000008;const int max_m = 10008;int t[max_n];int p[max_m];int f[MAX_M];i NT N,m;void Getfail () {f[0] = f[1] = 0;for (int i=1;i<m;i++) {int J = f[i];while (J && p[j]!=p[i]) j = f[j];f[i+1] = (P[i]==p[j])? j+1:0;}} int cmp () {int j = 0;for (int i=0;i<n;i++) {while (J && t[i] = p[j]) j = f[j];if (t[i] = = P[j]) j++;if (j==m) {retur n i-m+1+1;}} return-1;} int KMP () {getfail (); return CMP ();} void input () {scanf ("%d%d", &n,&m), for (int i=0;i<n;i++) {scanf ("%d", &t[i]);}; for (int i=0;i<m;i++) {scanf ("%d", &p[i]);} printf ("%d\n", KMP ());} int main () {int T;//freopen ("1.txt", "R", stdin), scanf ("%d", &t), while (t--) {input ();} return 0;}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
HDU 1711 KMP Template problem