码迷,mamicode.com
首页 > 其他好文 > 详细

字典树模板

时间:2018-10-10 23:42:19      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:nod   pre   ems   div   for   printf   模板   string   \n   

抄的

#include<stdio.h>
#include<string.h>
const int maxnode=1000005;
const int sigma_size=26;
struct Trie{
    int ch[maxnode][sigma_size];
    int sz;
    int num[maxnode];
    Trie(){ 
        sz=1;
         memset(ch[0],0,sizeof(ch[0]));
         memset(num,0,sizeof(num));
    }
    int idx(char c)  { return c - a; }
    
    
    void insert(char *s, int v){
        int  u=0, n =strlen(s);
        for(int i=0;i<n;i++){
            int c= idx(s[i]);
            if(!ch[u][c]){
                memset(ch[sz],0,sizeof(ch[sz]));
                
                num[sz]=0;
                ch[u][c]=sz++;
            }
            u=ch[u][c];
            num[u]++;
        } 
    }
 
 
    int search(char *s){
        int n=strlen(s);
        int u=0;
        for(int i=0;i<n;i++){
            int c=idx(s[i]);
            if(!ch[u][c])
                return 0;
            
            u=ch[u][c];
            
        }
        return num[u];
    }
};
Trie T;
int main()
{
    char s[15];
    int flag=0;
    
    while(gets(s)){
        if(s[0]==\0)break;
        T.insert(s,1);
    }
    
    while(~scanf("%s",s)){
        printf("%d\n",T.search(s));
    }
    
}

 

字典树模板

标签:nod   pre   ems   div   for   printf   模板   string   \n   

原文地址:https://www.cnblogs.com/ccsu-zry/p/9769536.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!