poj2418Hardwood Species

http://poj.org/problem?id=2418

trie树,有非空格、字母的字符

View Code
 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<stdlib.h>
 5 #include<algorithm>
 6 using namespace std;
 7 typedef struct node
 8 {
 9     int num;
10     struct node *next[130];
11     node()
12     {
13         memset(next,NULL,sizeof(next));
14         num = 0;
15     }
16 }trie;
17 int y,k;
18 char ss[10010][40],w[40];
19 void ctrie(trie *t,char *x)
20 {
21     int i,j,d,k = strlen(x);
22     char yy[40];
23     strcpy(yy,x);
24     trie *p = t;
25     for(i = 0 ; i < k ; i++)
26     {
27         d = x[i];
28         if(p->next[d]==NULL)
29         {
30             p->next[d] = new node;
31         }
32         p = p->next[d];
33     }
34     if(p->num==0)
35     {
36         strcpy(ss[y],yy);
37         y++;
38     }
39     p->num++;
40 }
41 void dfs(trie *t,int x)
42 {
43     trie *p = t;
44     int i;
45     if(p->num>0)
46     {
47         w[x] = '\0';
48         printf("%s %.4lf\n",w,p->num*100.0/k);
49     }
50     for(i = 1; i <= 129 ; i++)
51     {
52         if(p->next[i]!=NULL)
53         {
54             w[x] = i;
55             dfs(p->next[i],x+1);
56         }
57     }
58 }
59 int main()
60 {
61     int i,j;
62     char s[40];
63     trie *t = new node;
64     while(gets(s)!=NULL)
65     {
66         k++;
67         ctrie(t,s);
68     }
69     dfs(t,0);
70     return 0;
71 }
原文地址:https://www.cnblogs.com/shangyu/p/2868586.html