zoukankan      html  css  js  c++  java
  • UVa 699 The Falling Leaves(递归建树)

    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 }

  • 相关阅读:
    servicestack and redis
    图片服务器
    CRQS介绍
    javascript闭包之购物车加减及提示
    javascript best practices
    EOF
    2012年回顾
    volatile
    通过inode来操作文件
    采样问题
  • 原文地址:https://www.cnblogs.com/yxh-amysear/p/8449662.html
Copyright © 2011-2022 走看看