hiho1014(trie树)

Posted yijiull

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hiho1014(trie树)相关的知识,希望对你有一定的参考价值。

题目连接:https://hihocoder.com/problemset/problem/1014

 1 #include<cstdio>
 2 #include<cstring>
 3 const int maxn=110;
 4 struct trie
 5 {
 6     char a;
 7     int cnt;
 8     trie* nex[26];
 9     trie()
10     {
11         cnt=0;
12         memset(nex,NULL,sizeof(nex));
13     }
14     void init()
15     {
16         cnt=0;
17         memset(nex,NULL,sizeof(nex));
18     }
19 };
20 trie rt;
21 int ans;
22 
23 inline int id(char c)
24 {
25     return c-a;
26 }
27 
28 void inser(char *s)
29 {
30     int len=strlen(s);
31     trie* head=&rt;
32     for(int i=0;i<len;i++)
33     {
34         if(head->nex[id(s[i])]==NULL)
35         {
36             trie *node=new trie;
37             node->a=s[i];
38             head->nex[id(s[i])]=node;
39         }
40         head=head->nex[id(s[i])];
41         head->cnt++;
42     }
43 }
44 void fin(char *s)
45 {
46     int len=strlen(s);
47     trie *head=&rt;
48     ans=0;
49     for(int i=0;i<len;i++)
50     {
51         if(head->nex[id(s[i])]==NULL) return;
52         head=head->nex[id(s[i])];
53     }
54     ans=head->cnt;
55 }
56 int main()
57 {
58     char s[maxn];
59     int n,m;
60     while(scanf("%d",&n)!=EOF)
61     {
62         rt.init();
63         for(int i=0;i<n;i++)
64         {
65             scanf("%s",s);
66             inser(s);
67         }
68         scanf("%d",&m);
69         while(m--)
70         {
71             scanf("%s",s);
72             fin(s);
73             printf("%d\n",ans);
74         }
75     }
76 }

 

以上是关于hiho1014(trie树)的主要内容,如果未能解决你的问题,请参考以下文章

hiho一下 第二周&第四周:从Trie树到Trie图

hiho 第2周 Trie树(字典树)

hiho兄弟的字典树之争(hiho1014)

hihocoder--hiho一下第二周(Trie树)

hihoCoder 1014 Trie树 (Trie)

hihocoder_1014: Trie树(Trie树模板题)