SAM
Posted ryedii-blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAM相关的知识,希望对你有一定的参考价值。
关于 SAM:
- lnk 树上,任意非叶子节点,其孩子节点的 endpos 集合是本身 endpos 集合的划分。
- SAM 的 lnk 树是“前缀树”,任意节点是其孩子节点的后缀。
int kid[T][A], len[T], lnk[T];
int lst = 1, ct = 1;
void insert(int c) {
int p = lst, np = ++ct;
len[np] = len[p] + 1, siz[np] = 1, lst = np;
for (; p && !kid[p][c]; p = lnk[p]) kid[p][c] = np;
if (!p) lnk[np] = 1;
else {
if (len[p] + 1 == len[kid[p][c]]) lnk[np] = kid[p][c];
else {
int q = kid[p][c], nq = ++ct;
len[nq] = len[p] + 1, lnk[nq] = lnk[q], lnk[q] = lnk[np] = nq;
memcpy(kid[nq], kid[q], sizeof(kid[q]));
for (; p && kid[p][c] == q; p = lnk[p]) kid[p][c] = nq;
}
}
}
以上是关于SAM的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 代码调试器未连接到 SAM Local
如何在不使用 SAM 的情况下使用 AWS 代码部署来部署简单的 AWS lambda 函数?