kmp模板(HD1711)
生活随笔
收集整理的這篇文章主要介紹了
kmp模板(HD1711)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
雖然看的有點凌亂但是大概知道它是怎么搞得了,只是簡單的了解了子串自我匹配的過程,和與模串匹配的過程,所以寫了一下代 ??
帶你去找它 ~
#include<stdio.h>
#include<string.h>
int next[10005],n,m;
int a[1000005],b[10005];
void getnext()
{int i,j=0;next[1]=0;for(i=2;i<=m;i++){while(j>0&&b[i]!=b[j+1])j=next[j];if(b[i]==b[j+1])j+=1;next[i]=j;}
}
int kmp()
{int i,j=0;for(i=1;i<=n;i++){while(j>0&&a[i]!=b[j+1])j=next[j];if(a[i]==b[j+1])j++;if(j==m)return i-m+1;}return 0;
}int main()
{int t,i,j;scanf("%d",&t);while(t--){memset(next,0,sizeof(next));memset(a,0,sizeof(a));memset(b,0,sizeof(b));scanf("%d%d",&n,&m);for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=1;i<=m;i++)scanf("%d",&b[i]);getnext();if(!kmp())puts("-1");elseprintf("%d\n",kmp());}return 0;
}
碼。
碼。
總結
以上是生活随笔為你收集整理的kmp模板(HD1711)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现在好想睡觉哦
- 下一篇: kmp oj 亲和串