标签:
Description
Input
Output
Sample Input
Sample Output
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int maxn=1000008; int t[maxn]; int s[maxn]; int n[maxn]; int len,len1; void get_next() { int i=0; int j=-1; n[0]=-1; while(i<len) { if(j==-1||t[i]==t[j]) { i++; j++; n[i]=j; } else j=n[j]; } } void kmp() { int i=0; int j=0; while(i<len1) { if(s[i]==t[j]||j==-1) { i++; j++; } else j=n[j]; if(j==len) { printf("%d\n",i-len+1); return ; } } printf("-1\n"); } int main() { int m; scanf("%d",&m); while(m--) { memset(n,0,sizeof(n)); scanf("%d%d",&len1,&len); for(int i=0; i<len1; i++) { scanf("%d",&s[i]); } for(int j=0; j<len; j++) { scanf("%d",&t[j]); } get_next(); kmp(); } return 0; }
标签:
原文地址:http://www.cnblogs.com/tianmin123/p/4663854.html