uva 699】的更多相关文章

UVA.699 The Falling Leaves (二叉树 思维题) 题意分析 理解题意花了好半天,其实就是求建完树后再一条竖线上的所有节点的权值之和,如果按照普通的建树然后在计算的方法,是不方便实现的,思维转换,在数组中实现,从根节点,向左的话即在a[root-1]的位置累加上节点权值,再向左即在a[root-2]位置累加权值,向右则在a[root+1]的位置累加权值,以此类推,方可实现求和的要求. 代码总览 #include <cstdio> #include <cstring&…
UVa 699 The Falling Leaves(递归建树) 假设一棵二叉树也会落叶  而且叶子只会垂直下落   每个节点保存的值为那个节点上的叶子数   求所有叶子全部下落后   地面从左到右每堆有多少片叶子 和UVa 839 -- Not so Mobile(树的递归输入)有点像  都是递归输入的  一个节点(设水平位置为p)  则它的左右儿子节点的水平位置分别为  p-1  p+1   也是可以边输入边处理的  输入完也就得到答案了   注意每个样例后面都有一个空行  包括最后一个 #…
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=640 给一颗二叉树,每个结点都有一个水平位置,左子节点在它左边一个单位,右子节点在右边一个单位.从左向右输出每个水平位置的所有结点的权值之和. 一开始还建了树,后来发现建了树也啥用.哎,到现在为止,我的递归思想还是太弱了. #include<iostream> #include&…
意甲冠军:我几乎不记得的题意!.! 它是一个长坑..我们从根节点开始,留下每一步,保存横坐标1,正确的一步加上横坐标1. 那么同样的横坐标统计data值总和. 思维:我来想,这可以递归成就.上就能够算了.用一个数组来存各横坐标的data值,然后每来一个该横坐标的结点就直接加上就能够了.完了再遍历输出. 非常easy的,思路也非常清晰.本来以为能够一次过的,结果4次TLE+6次WA. . .简直破纪录了! .開始TLE的原因是while死循环.由于我传的flag变量没用指针.一直不能break出循…
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3QAAAMsCAIAAACTL3d2AAAgAElEQVR4nOx9y7GuPA4tKRADk/92T8mBEIiBFMiADMiABC7zvsW4qxh3FRmQg+9gFSpt2Rbm9T321hqcOpsPbFkvC1nYmTMYDAaDwWAwGO7A//k//yd7Nw0Gg8FgMBgMhl+Cf//73xZcGgwGg8FgMBjugWUuDQaDwWAwGAy3wYJLg8FgMBgMBsNts…
题意: 按先序方式输入一棵二叉树,节点是带权的,左孩子在父节点的左一个单位,右孩子在父节点的右一个单位,从左到右输出相同水平位置节点之和. 分析: 做了好几道二叉树的题,代码应该也很好理解了.这里maxn开始设了200.500都RE,后来索性开了2000,AC了 紫书上面init函数最后应该加一句 return true; //#define LOCAL #include <iostream> #include <cstdio> #include <cstring> u…
题意:给出按先序输入的一颗二叉树,分别求出从左到右的相同横坐标上的节点的权值之和 递归建树,然后用sum数组分别统计每一个横坐标上的权值之和 感觉建树都在递归递归递归= =慢慢理解吧 #include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<algorithm> using namespace std; typedef long long LL;…
额,刘汝佳小白里面的配套题目. 题目求二叉树同垂直线上结点值的和. 可以用二叉树做,挺水的其实. 尝试使用dfs实现了:开一个大点的数组,根节点为最中间那点,然后读取时就可以进行和的计算了. 代码: #include <cstdio> #include <cstring> const int maxn = 10000; int n = 500, tmp, num = 1; int cnt[maxn] = {0}; bool input(void) { scanf("%d&…
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <cstdlib> #include <stack> #include <cctype> #include <string> #include <malloc.h> #include…
题意:对于每一棵树,每一个结点都有它的水平位置,左子结点在根节点的水平位置-1,右子节点在根节点的位置+1,从左至右输出每个水平位置的节点之和 解题思路:由于上题所示的遍历方式如同二叉树的前序遍历,与天平那题不同,本题不需要构造出完整的结点左右子树,只需要构造出结点的相对位置,每次输入一个结点树,若为-1,则返回,否则依次递归执行input(p-1)与input(p+1). 代码如下: #include<stdio.h> #include<cstring> #include<…