关于getfail的一些问题
查看原帖
关于getfail的一些问题
44988
IU李知恩的粉丝楼主2021/5/26 14:43
void getfail() {
    queue<int> q;
    for (int i = 0; i < 26; i++) {
        if (AC[0].son[i]) {
            AC[AC[0].son[i]].fail = 0;
            q.push(AC[0].son[i]);
        }
    }
    while (q.size()) {
        int x = q.front();
        q.pop();
        for (int i = 0; i < 26; i++) {
            if (AC[x].son[i]) {
                AC[AC[x].son[x]].fail = AC[AC[x].fail].son[i];
                q.push(AC[x].son[x]);
            }
            else
                AC[x].son[i] = AC[AC[x].fail].son[i];
        }
    }
}

AC[x].son[i] = AC[AC[x].fail].son[i]; 这个是为什么

2021/5/26 14:43
加载中...