zoukankan      html  css  js  c++  java
  • 字典树

    https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html 

    这个博客最后还有几道 字典树的模板题

    这是一道    对于每个提问,给出以该字符串为前缀的单词的数量

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    
    int trie[1000010][26];    //数组形式定义字典树,值存储的是下一个字符的位置
    int num[1000010]={0};    //附加值,以某一字符串为前缀的单词的数量
    int pos = 1;
    
    void Insert(char word[])    //在字典树中插入某个单词
    {
        int i;
        int rt = 0;
        for(i=0;word[i];i++){
            int k = word[i]-'a';
            if(trie[rt][k]==0)    //如果对应字符还没有值
                trie[rt][k] = pos++;
            rt = trie[rt][k];
            num[rt]++;//s[i]的每个字母在树中 被经过 的次数 
        }
    }
    int Find(char word[])    //返回以某个字符串为前缀的单词的数量
    {
        int i;
        int rt = 0;
        for(i=0;word[i];i++){
            int k = word[i]-'a';
            if(trie[rt][k]==0)
                return 0;
            rt = trie[rt][k];
        }
        return num[rt]; //如果能到达这个rt,就输出 经过rt的次数,这样能保证是别的字符串的前缀或者相同 
    }
    
    int main()
    {
        char word[11];
        while(gets(word)){
            if(word[0]==NULL)    //空行。gets读入的回车符会自动转换为NULL。
                break;
            Insert(word);
        }
        while(gets(word))
            printf("%d
    ",Find(word));
        return 0;
    }
  • 相关阅读:
    类和对象的一些BIF
    mac入门--通过hhomebrew下载过慢问题
    Vue的组件及传参
    Vue的指令和成员
    Vue基础(1)
    Python中好用的模块们
    Django-Auth认证模块
    Django杂篇(2)
    Django杂篇(1)
    Django的日常-AJAX
  • 原文地址:https://www.cnblogs.com/thunder-110/p/9448551.html
Copyright © 2011-2022 走看看