HDU 1711 KMP Water~

来源:互联网 发布:windows.old删了的后果 编辑:程序博客网 时间:2024/05/18 03:31

1.Question:

没什么可说的,数字版本的KMP

2.Code:

#include"iostream"#include"cstdio"#include"cstring"#include"cstdlib"#define N 10005using namespace std;int data[N*100];int pattern[N];int nextp[N];int n,m;void getnext(){int k=-1;int j=0;nextp[0]=-1;while(j<m){if(k==-1||pattern[j]==pattern[k]){k++;j++;nextp[j]=k;}else k=nextp[k];}}int count(){int i=0;int j=0;while(i<n&&j<m){if(j==-1||data[i]==pattern[j]) i++,j++;else j=nextp[j];}if(j==m) return i-j+1;else return -1;}int main(){int t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(int i=0;i<n;i++) scanf("%d",&data[i]);for(int i=0;i<m;i++) scanf("%d",&pattern[i]);getnext();cout<<count()<<endl;}return 0;}


0 0
原创粉丝点击