• 字典树模板


    抄的

    #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]=='')break;
            T.insert(s,1);
        }
        
        while(~scanf("%s",s)){
            printf("%d
    ",T.search(s));
        }
        
    }
  • 相关阅读:
    idea--不能启动问题
    linux--mysql5.7安装
    vmware
    debezium
    java枚举
    springfox
    日志级别
    lombok--知识点
    es6--箭头函数
    网址访问过慢
  • 原文地址:https://www.cnblogs.com/ccsu-zry/p/9769536.html
Copyright © 2020-2023  润新知