KMP算法模板 求子串和模板串首先匹配的位置
2016-10-06 23:39
239 查看
#include <cstdio> using namespace std; const int MAXN = 1e6 + 10; int nex[MAXN]; int s[MAXN], t[MAXN]; void get_nex(int lm) { int i = 0, j = -1; nex[0] = -1; while (i < lm) { if (j == -1 || t[j] == t[i]) { i++; j++; nex[i] = j; } else j = nex[j]; } } int KMP(int ln, int lm) { get_nex (lm); int i = 0, j = 0; while (i < ln) { while (j != -1 && s[i] != t[j]) j = nex[j]; i++; j++; if (j == lm) return (i - j + 1); } return -1; } int main() { int T; scanf ("%d", &T); while (T--) { int ln, lm; scanf ("%d%d", &ln, &lm); for (int i=0; i<ln; ++i) scanf ("%d", &s[i]); for (int i=0; i<lm; ++i) scanf ("%d", &t[i]); printf ("%d\n", KMP (ln, lm)); } return 0; }
相关文章推荐
- (6)KMP算法(求子串的位置)______字符串的匹配
- 字符串单模板匹配学习笔记(一)kmp算法
- 串的模式匹配算法(求子串位置的定位函数,适合一般字符串定位)
- 暴力匹配和KMP算法模板
- 串的模式匹配算法(求子串位置的定位函数Index(S,T,pos))
- 匹配位置KMP算法深入浅出
- HDU 1711 Number Sequence【KMP】【模板题】【水题】(返回匹配到的第一个字母的位置)
- 模板匹配(Match Template)
- 改进的模式匹配算法——KMP算法
- 【opencv】Template matching(模板匹配)
- Halcon 模板匹配参数详解
- cvMatchTemplate() 模板匹配
- 暴力匹配算法与KMP算法(串的匹配)
- 利用特征点(Brief,ORB,SIFT)进行图像匹配,模板匹配
- halcon学习之模板匹配
- kmp算法模板
- 第7周 C语言程序设计(新2版) 练习2-5 返回最早出现匹配字符的位置
- 基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法
- 邝斌的ACM模板(KMP算法)
- 模板匹配