UVA 699 The Falling Leaves

原创 2016年08月30日 09:44:52

题目链接:http://acm.hust.edu.cn/vjudge/problem/19244



题解:给你一个先序二叉树,其中左子结点在父节点左一个单位,右节点在父节点右一个单位;
按照递归方式输入,-1表示空。让你从左到右输出每个水平位置的权值和。

 不需要真的建树 把当前位置的sum[]加上当前值就行了 


#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#include <cmath>
#include <stack>
#include <string>	
#include <sstream>
#include <map>
#include <set>
#define pi acos(-1.0)
#define LL long long
#define ULL unsigned long long
#define inf 0x3f3f3f3f
#define INF 1e18
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define debug(a) printf("---%d---\n", a)
#define mem0(a) memset(a, 0, sizeof(a))
#define memi(a) memset(a, inf, sizeof(a))
#define mem1(a) memset(a, -1, sizeof(a))
using namespace std;
typedef pair<int, int> P;
const double eps = 1e-10;
const int maxn = 1e6 + 5;
const int mod = 1e8;

int sum[maxn];
void Build(int pos)
{
    int v;
    cin >> v;
    if (v == -1) return;
    sum[pos] += v;
    Build(pos-1);
    Build(pos+1);
}
int main(void)
{
//	freopen("C:\\Users\\wave\\Desktop\\NULL.exe\\NULL\\in.txt","r", stdin);
    int v, cas = 1, pos;
    while (cin >> v){
        if (v == -1) break;
        memset(sum, 0, sizeof(sum));
        pos = maxn / 2;     //树根的水平位置
        sum[pos] += v;
        Build(pos-1);
        Build(pos+1);
        while (sum[pos]) pos--;	// 找最左边的结点 
        printf("Case %d:\n", cas++);
        printf("%d", sum[++pos]);
        while (sum[++pos])
            printf(" %d", sum[pos]);
        puts("\n");
    }

	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

UVa 699 The Falling Leaves(递归建树)

题意  假设一棵二叉树也会落叶  而且叶子只会垂直下落   每个节点保存的值为那个节点上的叶子数   求所有叶子全部下落后   地面从左到右每堆有多少片叶子 和上一题有点像  都是递归输入的  一个...
  • acvay
  • acvay
  • 2014年09月24日 12:48
  • 1079

Uva - 699 - The Falling Leaves

Uva又跪了一早晨,每次都是西班牙时间凌晨或者晚上,我们这边早晨下午的时候跪。。。最近两天跪的太频繁了点。。。 输入是先序输入,所以实现的时候可以递归输入数据,输入的同时累加位置上的权值和。 AC...
  • zyq522376829
  • zyq522376829
  • 2015年06月16日 11:01
  • 311

UVA 699 (The Falling Leaves)

UVa 699The Falling Leaves  Each year, fall in the North Central region is accompanied by the brilli...
  • github_37216944
  • github_37216944
  • 2017年03月29日 19:18
  • 65

UVA 699 - The Falling Leaves

#include #include #include #include using namespace std; int a[210][210]; int sum[210]; void cre...
  • u010652938
  • u010652938
  • 2013年12月02日 07:39
  • 359

uva 699 The Falling Leaves

uva 699 The Falling Leaves
  • tengfei461807914
  • tengfei461807914
  • 2016年02月18日 21:57
  • 192

UVa 699 - The Falling Leaves

树的题目.
  • u014247806
  • u014247806
  • 2014年04月26日 10:45
  • 694

UVA - 699 The Falling Leaves

The Falling Leaves  Each year, fall in the North Central region is accompanied by the bri...
  • HelloWorld10086
  • HelloWorld10086
  • 2014年07月27日 19:24
  • 461

UVa 699 Falling Leaves

#include #define HASHSIZE 20000 typedef struct TreeNode { int val; int pos; struct TreeN...
  • littleorange6
  • littleorange6
  • 2015年10月09日 10:20
  • 181

uva 699 The Falling Leaves

点击打开链接 题目意思:给定一串数字,第一个是根节点的值,接下来如果遇到-1 则该点为空,不是-1则创建节点,求最后从左往右每一条竖线的和 分别输出。 解题思路:1 建树 2 前序遍历求和 3 输出...
  • cgl1079743846
  • cgl1079743846
  • 2012年07月05日 01:53
  • 1213

The Falling Leaves UVA - 699

Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on ...
  • qq_32734731
  • qq_32734731
  • 2017年03月25日 20:47
  • 145
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVA 699 The Falling Leaves
举报原因:
原因补充:

(最多只允许输入30个字)