hdu 1711 Number Sequence(KMP模板题)

来源:互联网 发布:软件出口免税政策 编辑:程序博客网 时间:2024/06/05 04:44

我的第一道KMP。

把两个数列分别当成KMP算法中的模式串和目标串,这道题就变成了一个KMP算法模板题。

#include<stdio.h>#include<string.h>#define N 1000005#define M 10005int a[N],b[M];int next[M];int n,m;void setNext(){int i,j;i=0;j=-1;next[i]=j;while(i<m){if(j==-1||b[i]==b[j]){i++;j++;next[i]=j;}elsej=next[j];}return ;}int KMP(){int i,j;i=j=0;setNext();while(i<n){if(j==-1||a[i]==b[j]){i++;j++;if(j==m)return i-m+1;}elsej=next[j];}return -1;}int main(){int T;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);int i;for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=0;i<m;i++)scanf("%d",&b[i]);int temp;temp=KMP();printf("%d\n",temp);}return 0;}


原创粉丝点击