• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
seventh成长中---
博客园    首页    新随笔    联系   管理    订阅  订阅
字典树模板
 1 struct Trie
 2 {
 3     const static int maxsig=26;
 4     const static int maxn=500000;
 5     struct node
 6     {
 7         int next[maxsig];
 8         int cnt;
 9     }Trienode[maxn];
10     int size;
11     void init()
12     {
13         memset(Trienode[0].next,0,sizeof(Trienode[0].next));
14         Trienode[0].cnt=0;
15         size=1;
16     }
17     int getid(char c)
18     {
19         return c-'a';
20     }
21     void insert(char *s,int res)
22     {
23         int n=strlen(s);
24         int now=0;
25         for(int i=0; i<n; i++)
26         {
27             int c=getid(s[i]);
28             if(!Trienode[now].next[c])
29             {
30                 memset(Trienode[size].next,0,sizeof(Trienode[size].next));
31                 Trienode[size].cnt=0;
32                 Trienode[now].next[c]=size++;
33             }
34             now=Trienode[now].next[c];
35         }
36         Trienode[now].cnt=res;
37     }
38     int find(char *s)
39     {
40         int now=0,i;
41         int n=strlen(s);
42         for(i=0; i<n; i++)
43         {
44             int c=getid(s[i]);
45             if(Trienode[now].next[c])
46                 now=Trienode[now].next[c];
47             else break;
48         }
49         if(i==n&&Trienode[now].cnt)
50             return Trienode[now].cnt;
51         else return 0;
52     }
53 }tree;

 

posted on 2017-08-18 10:55  xseventh  阅读(174)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3