poj - 2418 Hardwood Species

二叉排序树,第一次做的时候状态不好,就放弃了,现在一看,怎么这么简单?

 1 #include <stdio.h>
 2 #include <string.h>
 3 struct Node
 4 {
 5     char name[40];
 6     int d,lc,rc;
 7     void init(char *t)
 8     {
 9         strcpy(name,t);
10         lc = rc = 0;
11         d = 1;
12     }
13 }a[10050];
14 int cnt = 1,num=0;
15 void inst(char *s, int n)
16 {
17     Node &u = a[n];
18     int f = strcmp(s,u.name);
19     if(!f) u.d++;
20     else if(f < 0)
21         if(u.lc) inst(s,u.lc);
22         else u.lc = ++num,a[num].init(s);
23     else
24         if(u.rc) inst(s,u.rc);
25         else u.rc = ++num,a[num].init(s);
26 }
27 void show(int n)
28 {
29     Node &u = a[n];
30     if(u.lc) show(u.lc);
31     double t = double(u.d)/ cnt*100;
32     printf("%s %.4lf\n",u.name,t);
33     if(u.rc) show(u.rc);
34 }
35 int main()
36 {
37     char t[40];
38     gets(t);
39     a[0].init(t);
40     while(gets(t)!=NULL)
41         cnt++,inst(t,0);
42     show(0);
43     return 0;
44 }

转载于:https://www.cnblogs.com/lzxskjo/archive/2012/08/20/2647817.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值