码迷,mamicode.com
首页 > 其他好文 > 详细

SAM建立模板

时间:2016-08-17 23:09:48      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

int extend(int x,int p) {
    int np=++tot;sam[np].len=sam[p].len+1;
    while (p&&!sam[p].son[x]) sam[p].son[x]=np,p=sam[p].pr;
    if (!p) sam[np].pr=1;else {
        int q=sam[p].son[x];
        if (sam[q].len==sam[p].len+1) sam[np].pr=q;
        else {
            int nq=++tot;
            sam[nq]=sam[q];
            sam[nq].len=sam[p].len+1;
            sam[q].pr=sam[np].pr=nq;
            while (p&&sam[p].son[x]==q) sam[p].son[x]=nq,p=sam[p].pr;
        }
    }
    return np;
}

SAM建立模板

标签:

原文地址:http://blog.csdn.net/alan_cty/article/details/52235497

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!