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

    trie树

    又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

    每一个节点都有26个子节点,t数组代表节点的子节点的编号,如果是0就代表没有那个子节点。

    int t[maxn][26],cnt;
    
    bool isw[maxn];     //标记节点是否是尾节点
    
    void insert(char *s,int rt)     //或者string s
    {
        for(int i = 0; s[i]; i++)
        {
            int x = s[i]-'a';
            if(t[rt][x] == 0)
            {
                t[rt][x] = ++cnt;       //不存在这个节点就建立这个节点
            }
            rt = t[rt][x];
        }
        isw[rt] = 1;        //标记这个是单词结尾
    }
    
    bool find(char *s,int rt)       //查询是否存在这个字符串
    {
        for(int i = 0; s[i]; i++)
        {
            int x = s[i]-'a';
            if(t[rt][x] == 0) return false;
            rt = t[rt][x];
        }
        return true;
    }
    

    例题:hdu 1251

  • 相关阅读:
    sklearn各种分类器简单使用
    使用Pandas加载数据
    使用Sklearn-train_test_split 划分数据集
    KNN_python
    ga算法
    粒子群算法
    bp神经网络的实现C++
    理解RNN
    感知器的实现C++
    线性神经网络的实现C++
  • 原文地址:https://www.cnblogs.com/hezongdnf/p/13384351.html
Copyright © 2011-2022 走看看