首页 > 其他 > 详细

ac自动机板子

时间:2017-03-02 17:20:59      阅读:148      评论:0      收藏:0      [点我收藏+]
procedure insert;
var now,i:longint;
      dd:char;
begin
  now:=1;len:=length(s);
  for i:=1 to len do
  begin
    dd:=s[i];
    if t[now].son[dd]=0 then
    begin
      inc(tt);t[now].son[dd]:=tt;
    end;
    now:=t[now].son[dd];
  end;
end;

procedure build;
var h,tail,i,v:longint;j:char;
begin
  t[0].fai:=1;h:=0;tail:=1;
  q[1]:=1;
  while h<>tail do
  begin
    inc(h);i:=q[h];
    for j:=a to z do
    begin
      v:=t[i].son[j];
      if v=0 then
      begin
        t[i].son[j]:=t[t[i].fai].son[j];continue;
      end;
      t[v].fai:=t[t[i].fai].son[j];
      inc(tail);q[tail]:=v;
    end;
  end;
end;

 

ac自动机板子

原文:http://www.cnblogs.com/oldjang/p/6490736.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!