标签:pid bsp which scribe == target ping tom careful
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 39408 Accepted Submission(s): 16269
#include<cstdio> #include<iostream> #include<cstring> #include<memory> using namespace std; int moban[1000005],wenben[1000005]; int next1[1000005]; int sum; void getnext(int* s,int* next1,int m) { next1[0]=0; next1[1]=0; for(int i=1;i<m;i++) { int j=next1[i]; while(j&&s[i]!=s[j]) j=next1[j]; if(s[i]==s[j]) next1[i+1]=j+1; else next1[i+1]=0; } } void kmp(int* ss,int* s,int* next1,int n,int m) { int ans=-1; getnext(s,next1,m); int j=0; for(int i=0;i<n;i++) { while(j&&s[j]!=ss[i]) j=next1[j]; if(s[j]==ss[i]) j++; if(j==m) { ans=i-m+2; break; } } printf("%d\n",ans); } int main() { int t; scanf("%d",&t); int n,m; while(t--) { scanf("%d %d",&n,&m); for(int i=0;i<n;i++) scanf("%d",&wenben[i]); for(int i=0;i<m;i++) scanf("%d",&moban[i]); kmp(wenben,moban,next1,n,m); } return 0; }
HDU 1711 Number Sequence (KMP简单题)
标签:pid bsp which scribe == target ping tom careful
原文地址:https://www.cnblogs.com/yinbiao/p/9457355.html