zoukankan      html  css  js  c++  java
  • 统计难题 字典树模板

    题意

      给你多个单词构建一个单词本,再给你多个单词,查询每个单词在单词本里作为单词本里单词的前缀出现了多少次。

    思路

      裸的字典树题,构建的时候插入,查询的时候直接查就行。

    AC代码

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    int t,n;
    char str[15];
    struct node{
        int cnt;
        struct node *next[26];
        node(){
            cnt=0;
            memset(next,0,sizeof(next));
        }
    };
    node *root;
    void buildtrie(char *s){
        node *p=root;
        node *tmp=NULL;
        int len=strlen(s);
        for(int i=0;i<len;i++){
            if(p->next[s[i]-'a']==NULL){
                tmp=new node;
                p->next[s[i]-'a']=tmp;
            }
            p=p->next[s[i]-'a'];
            p->cnt++;
        }
    }
    int findtrie(char *s){
        node *p=root;
        int len=strlen(s);
        for(int i=0;i<len;i++){
            if(p->next[s[i]-'a']==NULL){
                return 0;
            }     
            p=p->next[s[i]-'a'];
        }    
        return p->cnt;
    }
    void del(node *root){
        for(int i=0;i<26;i++){
            if(root->next[i])
                del(root->next[i]);
        }
        delete(root);
    }
    int main()
    {
        root=new node;
        while(cin.getline(str,15)){
            if(strlen(str)==0)
                break;
            buildtrie(str);
        }
        while(cin>>str){
            cout<<findtrie(str)<<'
    ';
        }
        return 0;
    }
  • 相关阅读:
    B-Suffix Array
    1 or 2
    Boundary
    Fake Maxpooling
    Cover the Tree
    Omkar and Circle
    20.5.31
    Yet Another Yet Another Task
    Codeforces Round #373 (Div. 2)E. Sasha and Array +线段树+矩阵快速幂
    2018 Multi-University Training Contest 2(Naive Operations ) hdu6315
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/13388262.html
Copyright © 2011-2022 走看看