码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 699 The Falling Leaves(递归建树)

时间:2018-02-15 17:53:24      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:init   eof   注意   while   title   有一个   cst   include   www.   

UVa 699 The Falling Leaves(递归建树)

  假设一棵二叉树也会落叶  而且叶子只会垂直下落   每个节点保存的值为那个节点上的叶子数   求所有叶子全部下落后   地面从左到右每堆有多少片叶子

  和UVa 839 -- Not so Mobile(树的递归输入)有点像  都是递归输入的  一个节点(设水平位置为p)  则它的左右儿子节点的水平位置分别为  p-1  p+1   也是可以边输入边处理的  输入完也就得到答案了   注意每个样例后面都有一个空行  包括最后一个

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 const int maxn = 205;
 5 int sum[maxn];
 6 void build(int p)
 7 {
 8     int v;
 9     cin>>v;
10     if(v == -1) return;
11     sum[p] += v;
12     build(p-1);build(p+1);
13 }
14 
15 bool init()
16 {
17     int v;
18     cin>>v;
19     if(v == -1) return false;
20     memset(sum,0,sizeof(sum));
21     sum[maxn/2] += v;
22     build(maxn/2-1);build(maxn/2+1);
23     return true;
24 }
25 
26 int main()
27 {
28     int kase = 0;
29     while(init())
30     {
31         int p=0;
32         while(sum[p] == 0) p++;
33         cout<<"Case "<<++kase<<":"<<endl;
34         for(int i=p;;i++)
35         {
36             if(sum[i] == 0)
37             {
38                 cout<<endl<<endl;break;
39             }
40             if(i!=p) cout<<" ";
41             cout<<sum[i];
42         }
43     }
44     return 0;
45 }

技术分享图片

 

UVa 699 The Falling Leaves(递归建树)

标签:init   eof   注意   while   title   有一个   cst   include   www.   

原文地址:https://www.cnblogs.com/yxh-amysear/p/8449662.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!