hdu 1711 Number Sequence

来源:互联网 发布:大数据要什么学历 编辑:程序博客网 时间:2024/06/08 07:04

竟然忘了边界情况,。。。。。。。。大哭

代码如下:

#include<stdio.h>#include<string.h>#define N 1000050#define M 10050int  a[N],b[M];int next[N];int m,n;void  get_next(int b[]){      int i,j;      i=0,j=-1;      next[0]=-1;      while(i<m)      {        if(j==-1||b[i]==b[j])        {           i++;           j++;           next[i]=j;       }        else        j=next[j];      }}void  kmp(int n,int m){   int i,j,ans;   ans=-1;   i=j=0;   while(i<n)   {      if(j==-1||a[i]==b[j])      {         i++;         j++;      }      else      j=next[j];            if(j==m)       {        ans=i-j+1;        break;      }         }  printf("%d\n",ans);      }int main(){  int  T,i;    scanf("%d",&T);  while(T--)  {    scanf("%d%d",&n,&m);    for(i=0;i<n;i++)     scanf("%d",&a[i]);    for(i=0;i<m;i++)    scanf("%d",&b[i]);    get_next(b);    kmp(n,m);  }   return 0;} 


0 0
原创粉丝点击