HDU 1711 Number Sequence KMP题解
来源:互联网 发布:最喜欢的一句话知乎 编辑:程序博客网 时间:2024/06/08 19:16
KMP查找整数数列,不是查找字符串。
原理是一样的,不过把字符串转换为数列,其他基本上是一样的。
#include <stdio.h>#include <string.h>const int MAX_N = 1000001;const int MAX_M = 10001;int strN[MAX_N], strM[MAX_M], next[MAX_M], N, M;void getNext(){memset(next, 0, sizeof(int) * M);for (int i = 1, j = 0; i < M; ){if (strM[i] == strM[j]) next[i++] = ++j;else if (j > 0) j = next[j-1];else i++;}}int kmpSearch(){int i = 0, j = 0;for ( ; M-j <= N-i && j < M; ){if (strN[i] == strM[j]) i++, j++;else if (j > 0) j = next[j-1];else i++;}if (j == M) return i-M+1;//注意题意从1开始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", strN+i);}for (int i = 0; i < M; i++){scanf("%d", strM+i);}getNext();printf("%d\n", kmpSearch());}return 0;}
1 0
- HDU 1711 Number Sequence KMP题解
- HDU 1711 Number Sequence(kmp)
- HDU 1711 Number Sequence (kmp)
- hdu 1711 Number Sequence--KMP
- hdu kmp 1711 Number Sequence
- HDU 1711 Number Sequence (KMP)
- HDU 1711Number Sequence(KMP)
- Hdu 1711 KMP Number Sequence
- 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)
- hdu 1711 Number Sequence(KMP)
- KMP & hdu 1711 Number Sequence
- hdu 1711 Number Sequence(kmp)
- 10g RAC 使用service实现taf
- js判断undefined类型
- string
- HDU2674 N!Again 【数学】
- poj 1308 并查集(判断一组点对是否能够组成树)
- HDU 1711 Number Sequence KMP题解
- 在eclipse下直接部署maven工程缺少jar包问题
- ios--视图控制器视图的装载
- UVa 340 Master-Mind Hints
- sort函数用法详解
- JavaScript学习二 常言的方法整理
- 包含最小元素的栈
- hdu 1754 I Hate It
- Ubuntu(Linux)常用的指令