欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

ac自动机查找(未全)

时间:2024-05-05 15:48 作者:admin 点击:
void findt(string s){ trie *j,*f=root; for(int i=0;is.size();i++){ //根据上一个i在trie的位置f,找当前i while(f!=rootf-m.count(s[i])==0) f=f-fail; //如果没找到,从root开始找 if(f-m.count(s[i])==0) f=root; else{ //找到了
void findt(string s){
    trie *j,*f=root;    
    for(int i=0;i<s.size();i++){    
        //根据上一个i在trie的位置f,找当前i        
        while(f!=root&&f->m.count(s[i])==0) f=f->fail;        
        //如果没找到,从root开始找        
        if(f->m.count(s[i])==0) f=root;        
        else{            
            //找到了,j无限向上找失配节点,如果是单词结尾,累加数量            
            j=f;            
            while(j!=NULL){                
                j=j->fail;            
            }        
        }    
    }
}


(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%