hdu 1711 Number Sequence (KMP - 初步)
2012-09-06 11:51
405 查看
#include <iostream> #include <cstring> #include <string> #include <cstdio> using namespace std; const int N = 1000005; const int M = 10005; int s ; int t[M]; int next[M]; void get_next(int len) { int i, j; i = 0, j = -1; next[0] = -1; while(i < len-1) { if(j == -1 || t[i] == t[j]) { i++, j++; next[i] = j; } else { j = next[j]; } } } int kmp(int sl, int tl) { int i = 0, j = 0; while(i < sl && j < tl) { if(j == -1 || s[i] == t[j]) { i++, j++; } else { j = next[j]; } } if(j == tl) { return i - j + 1; } else return -1; } int main() { int T, n, m, ans; cin >> T; while(T--) { scanf("%d%d", &n, &m); int i; for(i = 0; i < n; i++) { scanf("%d", s+i); } for(i = 0; i < m; i++) { scanf("%d", t+i); } get_next(m); ans = kmp(n, m); printf("%d\n", ans); } return 0; }
相关文章推荐
- hdu-1711-Number Sequence (KMP)
- HDU 1711 Number Sequence(KMP模板)
- 【KMP模板】HDU 1711 Number Sequence
- HDU 1711 Number Sequence (kmp)
- hdu 1711 Number Sequence KMP 基础题
- hdu 1711 Number Sequence(kmp)
- 【hdu 1711】Number Sequence(kmp)
- KMP算法的定义及KMP练手题 HDU 1711 Number Sequence (我的模板代码)
- hdu 1711 Number Sequence (KMP)
- HDU 1711 Number Sequence (KMP找子串第一次出现的位置)(基础模板题)
- (KMP 1.1)hdu 1711 Number Sequence(KMP的简单应用——求pattern在text中第一次出现的位置)
- hdu 1711 Number Sequence KMP 基础题
- [HDU - 1711] Number Sequence(KMP)
- 【HDU 1711】Number Sequence 【KMP 模板】
- (HDU)1711 - Number Sequence【KMP】
- hdu 1711 Number Sequence(KMP模板题)
- 【HDU 1711】Number Sequence(KMP)
- HDU 1711—— Number Sequence(KMP 入门)
- hdu 1711 Number Sequence(kmp)
- HDU-1711 Number Sequence (kmp)