hdu 1711 number sequence

来源:互联网 发布:达芬奇调色 mac 编辑:程序博客网 时间:2024/06/11 00:05

water kmp.

#include<iostream>#include<stdio.h>using namespace std;int N[1000000],M[10000];int nexts[10000];int length1,length2;void get_next(){int i,j;i=0;j=-1;nexts[0]=-1;while((i+1)!=length2){if(j==-1||M[j]==M[i]){j=j+1;i=i+1;nexts[i]=j;}else j=nexts[j];}}int kmp(){int i,j;i=0;j=0;get_next();while(i<length1){if(N[i]==M[j]){i=i+1;j=j+1;if(j==length2){return i-length2;break;}}else {j=nexts[j];if(j==-1){i=i+1;j=0;}}}return -1;}int main(){int t,i;cin>>t;while(t--){cin>>length1>>length2;for(i=0;i<length1;i++)scanf("%d",&N[i]);for(i=0;i<length2;i++)scanf("%d",&M[i]);int traget;traget=kmp();if(traget==-1)cout<<traget<<endl;else cout<<traget+1<<endl;}return 0;}


原创粉丝点击