zoukankan      html  css  js  c++  java
  • Trie字典树 静态内存

    静态字典树 

    看了好久的字典树,挺简单的一个结构,愣是看了这么久才写出来。。。

    专心一点就不会这样了。。。。

    接下来就去刷刷字典树的题吧。。。。。。。

    下面是字典树。。。。

    定义节点

    typedef struct Trie{
    char val;  //其实这东西没啥软用。。。注释掉也一样。。。没有变化
    bool isword;
    struct Trie *next[26];
    }*Trie_pointer;

    然后建树

    这几天抽风了。。。

    把memset写在函数外面去了。。。。

    编译老半天过不去。。。。

    日了。。。。。。。

    代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define mem(a) memset(a,0,sizeof(a))
     4 #define long long ll;
     5 
     6 typedef struct Trie{
     7     char val;
     8     bool isword;
     9     struct Trie *next[26];
    10 }*Trie_pointer;
    11 
    12 Trie trie[200000];
    13 
    14 int tot;
    15 
    16 Trie_pointer CreateNode()
    17 {
    18     return &trie[tot++];
    19 }
    20 
    21 void Insert(Trie_pointer root, char *s)
    22 {
    23     if(*s == '')
    24         return;
    25     char *p = s;
    26     Trie_pointer tmp,t = root;
    27     while(*p != '')
    28     {
    29         if(t->next[*p - 'a'] == NULL)
    30         {
    31             tmp = CreateNode();
    32             tmp->val = *p;
    33             t->next[*p - 'a'] = tmp;
    34         }
    35         t = t->next[*p - 'a'];
    36         p++;
    37     }
    38     t->isword = 1;
    39 }
    40 
    41 bool Search(Trie_pointer root, char *s)
    42 {
    43     Trie_pointer tmp,t = root;
    44     if(*s == '')
    45         return false;
    46     while(*s != '')
    47     {
    48         if(t->next[*s - 'a'] ==NULL)
    49             return false;
    50         t = t->next[*s -'a'];
    51         s++;
    52     }
    53     if(t->isword == 0 )
    54         return false;
    55     return true;
    56 }
    57 
    58 int main()
    59 {
    60     Trie root;
    61     char s[20];
    62     int i,n;
    63     mem(trie,0,sizeof(trie));
    64     mem(&root,0,sizeof(root));
    65     cin>>n;
    66     for(i=1; i<=n; i++)
    67     {
    68         cin>>s;
    69        Insert(&root,s);
    70     }
    71     while(cin>>s)
    72     {
    73         bool flag = Search(&root,s);
    74         if(flag)
    75             printf("YES
    ");
    76         else
    77             printf("NO
    ");
    78     }
    79     return 0;
    80 }
  • 相关阅读:
    FS配置文件
    FS 目录结构
    FreeSWITCH 架构
    FreeSWITCH API 与APP
    呼入电话处理
    FS 分机呼出
    PartyUs 待添加内容(不定期更新)
    PHP-Codeigniter:实习笔记5
    PHP-Codeigniter:实习笔记4
    PHP-Codeigniter:实习笔记3
  • 原文地址:https://www.cnblogs.com/max88888888/p/5869612.html
Copyright © 2011-2022 走看看