ac自動機模板

2022-08-17 12:06:11 字數 853 閱讀 4843

ac自動機是多模式字串匹配,建立在字典樹的基礎上。

#include#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn=10005

;const

int cs=26

;struct

ac//

剛開始只初始化根節點

int getid(char c)

void insert(char *s,int i) //

字典樹插入字串

be=next[be][s];

}val[be]=i;//

儲存資訊

}

void getfail() //

找失配指標

while(!que.empty())

que.push(u);

int v=fail[x];

while(v&&!next[v][i]) v=fail[v];

fail[u]=next[v][i];

last[u]=val[fail[u]]?fail[u]:last[fail[u]];}}

}void print(int i,int

j)

void find(char *t) //

匹配 }

}ac;

intmain()

ac.getfail();

ac.find(mom);

}return0;

}

view code

AC自動機模板

ac自動機模板 ac自動機模板 使用方法 1 init 初始化函式 2 insert str 插入字串函式 3 build 構建ac自動機 4 query str 返回出現的字串個數 使用需注意事項 1 注意輸入的字元的範圍,需對next和其二維大小及相關引數進行更改 2 注意next fail和e...

AC自動機模板

ac自動機主要是用於多模式串的匹配問題,按照我的理解,ac自動機就是在tire樹上實現kmp演算法,由於ac自動機加入了失敗指標,所以可以把他看成乙個狀態轉移的圖。給出模板 include include include include includeusing namespace std cons...

模板 AC自動機

我覺得ac自動機的難點和核心是構建失敗指標,父親的失敗指標的兒子 son2 中有和兒子 son1 相同的,即為son1的失敗指標 例 還是有個不懂的地方 第90行,跪求大佬賜教 include include include include include include include inclu...