标题是浅谈,那么我也就不过多的深入钻研了
顶多算是说说定义,带大家看看代码
首先,AC自动机,很多人看了这个算法名字,就自然的很慌,就不敢学
其实静下心来,慢慢看,会发现其实比KMP还要容易理解(只不过是多模式串匹配,树形结构还很容易看出共同的前缀)
AC自动机其实是在Trie树上进行一个类似于KMP的匹配操作(来自某Dalao)
首先是要建一棵Trie字典树,具体如下:
void pre(){ int c=1; for(int i=1;i<=len;i++){ int f=a[i]-'a'; if(!trie[c][f]) trie[c][f]=++tot;//判断在之前是否出现过 c=trie[c][f]; } vis[c]++;//根据题目描述的不同改变 return ; }