HDU 1711 Number Sequence
2015-02-20 19:48
239 查看
题意:给出两个数组,寻找k使得a[k] == b[1] …a[k+n] == b
,问最小的k是多少;
做法:KMP呗。
,问最小的k是多少;
做法:KMP呗。
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; int c1[1111111],c2[111111]; int next[111111],lenc1,lenc2; void getnext() { int i = 0 , j = -1; next[0] = -1; while(i != lenc2) { if(j == -1 || c2[i] == c2[j]) next[++i] = ++j; else j = next[j]; } } int KMP() { int i = 0, j = 0; while(i != lenc1 && j != lenc2) { if(c1[i] == c2[j] || j == -1) i++,j++; else j = next[j]; if (j == lenc2) { return i; } } return -1; } int main() { int t; scanf("%d",&t); while(t--) { scanf("%d%d",&lenc1,&lenc2); for(int i = 0 ; i < lenc1 ; i++) scanf("%d",&c1[i]); for(int i = 0 ; i < lenc2 ; i++) scanf("%d",&c2[i]); getnext(); int ans = KMP(); if(ans == -1) printf("-1\n"); else printf("%d\n",ans - lenc2 + 1); } return 0; }
相关文章推荐
- HDU 1711 Number Sequence【KMP】【模板题】【水题】(返回匹配到的第一个字母的位置)
- HDU 1711 Number Sequence
- hdu 1711 Number Sequence
- HDU-1711-Number Sequence
- Kmp 模板 之 hdu 1711 Number Sequence
- HDU 1711 Number Sequence(kmp专题)
- HDU 1711 Number Sequence
- HDU 1711 Number Sequence(KMP)
- hdu1711 Number Sequence
- KMP算法的定义及KMP练手题 HDU 1711 Number Sequence (我的模板代码)
- Number Sequence (HDU 1711)
- HDU 1711 Number Sequence(KMP模板)
- hdu 1711 Number Sequence
- 模板 kmp算法 hdu 1711 Number Sequence
- HDU 1711 Number Sequence(KMP)
- HDU 1711 Number Sequence(KMP模板)
- hdu 1711 Number Sequence
- HDU 1711 Number Sequence
- HDU 1711 Number Sequence(KMP入门)
- HDU 1711 Number Sequence(kmp)