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 }

 

 

 

你可能感兴趣的:(poj)