zoukankan      html  css  js  c++  java
  • Trie

    #include<iostream>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<cstdio>
    #define Max 26
    using namespace std;
    
    struct TrieNode{
        int ti;
        TrieNode *next[Max];
        TrieNode(){
            ti=0;
            memset(next,NULL,sizeof(next));
        }
    };
    
    void Insert(TrieNode *root,char * str){
        int len=strlen(str);
        TrieNode *p=root;
        for(int i=0;i<len;++i){
            int id=str[i]-'a';
            if(p->next[id]==NULL)
                p->next[id]=new TrieNode();
            p=p->next[id];
            p->ti++;
        }
    }
    
    int searchTrie(TrieNode *root,char *str){
        TrieNode *p=root;
        int len=strlen(str);
        for(int i=0;i<len;++i){
            int id=str[i]-'a';
            if(p->next[id]==NULL)
                return 0;
            p=p->next[id];
        }
        return p->ti;
    }
    
    int Behind(TrieNode *root,char *str){
        TrieNode *p=root;
        int len=strlen(str);
        int ans=0;
        for(int i=0;i<len;++i){
            int id=str[i]-'a';
            for(int j=id+1;j<Max;++j)
                if(p->next[j]!=NULL)
                    ans+=p->next[j]->ti;
            p=p->next[id];
        }
        for(int i=0;i<Max;++i)
            if(p->next[i]!=NULL)
                ans+=p->next[i]->ti;
        return ans;
    }
    
    int n,m,ans;
    char str[50005];
    char now[50006];
    
    int main(){
        TrieNode *root=new TrieNode();
        scanf("%d",&n);
        for(int i=0;i<n;++i){
        	scanf("%s",str);
        	Insert(root,str);
        }
        scanf("%d",&m);
        for(int i=1;i<=m;++i){
        	scanf("%s",str);
        	printf("%d
    ",searchTrie(root,str));
        }
        delete root;
        return 0;
    }
    
  • 相关阅读:
    jquery
    模板库
    Luogu P1902 刺杀大使
    8.20模拟赛再次观光记
    Luogu P1122 最大子树和
    Luogu P1470 最长前缀 Longest Prefix
    8.18爆炸记
    Luogu P1388 算式
    Luogu P1103 书本整理
    8.17
  • 原文地址:https://www.cnblogs.com/qdscwyy/p/7792206.html
Copyright © 2011-2022 走看看