zoukankan      html  css  js  c++  java
  • [模板] trie树 (字典树)

    本文基于https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int amn=1e5+5;
     4 int trie[amn][26],tid;
     5 bool isw[amn];
     6 int sum[amn];
     7 void init(){
     8     memset(isw,0,sizeof isw);
     9     memset(trie,0,sizeof trie);
    10     memset(sum,0,sizeof sum);
    11     tid=0;  ///节点在整个树中的序号
    12 }
    13 void insert(char *s){   ///插入一个单词,如果想查询后缀就反向插入
    14     int len=strlen(s),rt=0;
    15     for(int i=0;i<len;i++){
    16         int id=s[i]-'a';    ///看选择当前节点的哪个儿子
    17         if(!trie[rt][id])
    18             trie[rt][id]=++tid;
    19         sum[rt]++;  ///前缀统计
    20         rt=trie[rt][id];
    21     }
    22     isw[rt]=1;  ///结尾单词标记
    23 }
    24 bool isword(char *s){   ///查询是否存在这个单词
    25     int len=strlen(s),rt=0;
    26     for(int i=0;i<len;i++){
    27         int id=s[i]-'a';
    28         if(!trie[rt][id])return 0;
    29         rt=trie[rt][id];
    30     }
    31     return isw[rt];
    32 }
    33 bool isprefix(char *s){ ///查询是否存在这个前缀
    34     int len=strlen(s),rt=0;
    35     for(int i=0;i<len;i++){
    36         int id=s[i]-'a';
    37         if(!trie[rt][id])return 0;
    38         rt=trie[rt][id];
    39     }
    40     return 1;
    41 }
    42 int prefix_sum(char *s){///查询当前前缀出现的次数
    43     int len=strlen(s),rt=0;
    44     for(int i=0;i<len;i++){
    45         int id=s[i]-'a';
    46         if(!trie[rt][id])return 0;
    47         rt=trie[rt][id];
    48     }
    49     return sum[rt];
    50 }
    51 int main(){
    52     init();
    53     char *s="hello",*s1="he";
    54     insert(s);
    55     printf("isword:%d isprefix:%d prefix_sum:%d
    ",isword(s),isprefix(s1),prefix_sum(s1));
    56 }
  • 相关阅读:
    WCF三种通信方式
    Linux发布WebApi
    Supervisor Linux程序进程管理
    Centos安装Mongodb
    本地网址连不上远程mysql问题
    .Net之垃圾回收算法
    .Net之托管堆资源分配
    Centos7+ASP.Net Core 运行
    ASP .Net Core 使用 Dapper 轻型ORM框架
    转载 Jquery中AJAX参数详细介绍
  • 原文地址:https://www.cnblogs.com/Railgun000/p/11259933.html
Copyright © 2011-2022 走看看