HDU 1711 Number Sequence
2014-07-19 17:10
162 查看
经典kmp
#include <iostream> #include <cstdio> using namespace std; int n,m; int a[1000010],b[10010],next[10010]; void getnext (int *s,int *next){ next[0]=next[1]=0; for (int i=1;i<m;i++){ int j=next[i]; while (j&&s[i]!=s[j]) j=next[j]; next[i+1]=s[i]==s[j]?j+1:0; } } int kmp (int *a,int *b,int *next){ getnext (b,next); int j=0; for (int i=0;i<n;i++){ while (j&&a[i]!=b[j]) j=next[j]; if (a[i]==b[j]) j++;//cout<<j<<" "; if (j==m) return i-m+2; } 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",&a[i]); for (int i=0;i<m;i++) scanf ("%d",&b[i]); int ans=kmp (a,b,next); printf ("%d\n",ans); } return 0; }
相关文章推荐
- HDU1711-----Number Sequence-----裸的KMP
- HDU 1711 Number Sequence【KMP】【模板题】【水题】(返回匹配到的第一个字母的位置)
- HDU 1711 Number Sequence(KMP模板)
- hdu 1711 Number Sequence(KMP模板题)
- HDU 1711 Number Sequence
- hdu 1711 Number Sequence
- HDU-1711-Number Sequence
- HDU 1711 Number Sequence(kmp专题)
- hdu1711 Number Sequence
- hdu 1711 (Number Sequence)
- Number Sequence (HDU 1711)
- HDU 1711 Number Sequence 【KMP算法】
- HDU 1711 Number Sequence(KMP模板)
- HDU 1711 Number Sequence (KMP)
- hdu 1711 Number Sequence
- 模板 kmp算法 hdu 1711 Number Sequence
- HDU 1711 Number Sequence(KMP)
- hdu1711 Number Sequence
- HDU 1711 Number Sequence(KMP入门)
- HDU 1711 Number Sequence