• 字典树模板


     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cstdlib>
     4 #include<vector>
     5 #include<map>
     6 #include<iostream>
     7 #include<algorithm>
     8 using namespace std;
     9 struct trie
    10 {
    11     int cont;
    12     trie *next[27];
    13     trie()
    14     {
    15         cont=0;
    16         memset(next,0,sizeof(next));
    17     }
    18 };
    19 trie *root;
    20 void init(char *v)
    21 {
    22     trie *p=root;
    23     for(int i=0; v[i]; i++)
    24     {
    25         int pet=v[i]-'a';
    26         if(p->next[pet]==NULL)
    27             p->next[pet]=new trie();
    28         p=p->next[pet];
    29         p->cont++;
    30     }
    31 }
    32 int finde(char *v)
    33 {
    34     trie *p=root;
    35     int i;
    36     for(i=0; v[i]; i++)
    37     {
    38         int tep=v[i]-'a';
    39         if(p->cont==1)
    40             break;
    41         p=p->next[tep];
    42     }
    43     return i;
    44 }
    45 void del(trie *p)
    46 {
    47     for(int i=0; i<26; i++)
    48     {
    49         if(p->next[i]!=NULL)
    50             del(p->next[i]);
    51     }
    52     free(p);
    53 }
    54 int main()
    55 {
    56     char ch[1005][25];
    57     char v[25];
    58     int i=0;
    59     root=new trie();//先为跟节点申请内存;
    60     while(gets(ch[i]),strcmp(ch[i],""))
    61     {
    62         init(ch[i]);
    63         //strcpy(ch[i],v);
    64         i++;
    65     }
    66     for(int j=0; j<=i; j++)
    67     {
    68         char v[25];
    69         int t=finde(ch[j]);
    70         //printf("%s %d
    ",ch[j],t);
    71         printf("%s ",ch[j]);
    72         for(int k=0; k<t; k++)
    73             printf("%c",ch[j][k]);
    74         printf("
    ");
    75     }
    76     return 0;
    77 }
    油!油!you@
  • 相关阅读:
    代理模式和装饰模式的理解
    Mysql常用命令
    java动态代理(JDK和cglib)
    MyEclipse中SVN使用步骤
    ActionContext和ServletActionContext小结
    java和unicode
    Win7下telnet使用
    MyEclipse8.5安装SVN插件
    linux常用命令(基础)
    选择TreeView控件的树状数据节点的JS方法
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/5095011.html
Copyright © 2020-2023  润新知