6_9 天平(UVa839)<二叉树的DFS>

前一个ubiquous通信小工具,移动只是一个由弦和电线组成的结构五彩缤纷的东西。这种移动通常被发现悬挂在小婴儿的摇篮。
图说明了一个简单的移动。它只是一个电线,悬挂的一个字符串,每一个对象的对象。它可以也被看作是一种杠杆的支点上的字符串的字符串联系的电线。从杠杆原理,我们知道,要平衡一个简单的移动的对象的重量的产品他们距离支点必须相等。这是WL×DL = WR×DR,DL是左边的距离DR是右边的距离,WL是左边的重量和WR是右边的重量。
在一个更复杂的移动的对象可能被替换由一个子移动,如下图所示。
在这种情况下,如果移动是平衡的,所以我们需要你写一个程序,给定一个移动的描述作为输入,检查是否平衡。

Input

输入开始一个单独的正整数,在一行上,它指示下面的情况,每一个如下所描述的。这条线是用一个空行,还有两连续输入之间空一行。
输入由若干行组成,每一个包含4个由一个空格分隔的整数。
4个整数表示每个对象的距离和它们的权重,在格式:
WL DL WR DR
如果WL或WR是零,有一分移动挂在端和线以下定义子移动。在这种情况下,我们计算的子移动重量为其所有物体的重量的总和,无论电线串的重量。如果WL和WR是零以下行定义了两个子手机:先左后右。

Output

对于每一个测试案例,输出必须遵循下面的描述。连续两种情况下的输出将被一个空白行隔开。
如果手机处于平衡,输出“YES”,否则输出‘NO‘。

Sample Input
1
0 2 0 4
0 3 0 1
1 1 1 1
2 4 4 2
1 6 3 2

Sample Output
YES

时间: 2024-11-14 23:46:06

6_9 天平(UVa839)<二叉树的DFS>的相关文章

I - 天平 (p157,二叉树的 DFS) UVA - 839

题目 输入一个树状天平,根据力矩相等原则判断是否平衡.如图6-5所示,所谓力矩相等,就是WlDl=WrDr,其中Wl和Wr分别为左右两边砝码的重量,D为距离.采用递归(先序)方式输入:每个天平的格式为Wl,Dl,Wr,Dr,当Wl或Wr为0时,表示该"砝码"实际是一个子天平,接下来会描述这个子天平.当Wl=Wr=0时,会先描述左子天平,然后是右子天平. 样例输入: 10 2 0 40 3 0 11 1 1 12 4 4 21 6 3 2 输出YES 我还是按照上一节数组记录结点的方法做

给定一个二叉树的dfs遍历结果(NULL记为*),重构二叉树,返回头节点

给定一个二叉树的dfs遍历结果(NULL记为*),重构二叉树,返回头节点. 思路:第一遍先把*也插入到树中,第二遍把*改成NULL. 如果直接把*记录为NULL,那再来一个节点就不知道,到底是*赋值的NULL,还是本身自带的NULL. 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 struct TreeNode{ 5 char val; 6 TreeNode* left; 7 TreeNode* right; 8 TreeNode(

UVa839 Not so Mobile (二叉树的DFS)

链接:http://acm.hust.edu.cn/vjudge/problem/19486分析:二叉树模型的DFS.输入是采用递归方式输入,直接变读边判断就行. 1 #include <cstdio> 2 3 bool solve(int& W) { 4 int W1, D1, W2, D2; 5 scanf("%d%d%d%d", &W1, &D1, &W2, &D2); 6 bool b1 = true, b2 = true;

二叉树的递归遍历 天平UVa839

题意:输入一个树状的天平,利用杠杆原理,根据力矩是否相等(W1D1==W1D2)判断天平是否平衡 解题思路:1.由于判断天平是否平衡,当W1和W2都为0的时候,会先输入左子树,再输入右子树 2.此时的W1和W2会变成子树的重量之和,此时最好用到引用(同时改变传入参数的值) 3.递归的输入,并且判断子天平是否平衡 代码如下: 1 #include<stdio.h> 2 #include<iostream> 3 using namespace std; 4 bool input(int

Uva 839天平(二叉树dfs, 递归建树)

题意: 给定一个天平长度 输入格式为 wl dl wr dr 分别代表天平左边长度,左边重量, 右边长度, 右边重量. 如果重量为0, 说明下面还有一个天平, 递归给出. 样例输入:10 2 0 40 3 0 11 1 1 12 4 4 21 6 3 2 如果天平是左右重量相等的 输出YES 否则输出NO. 分析: 既然以递归的定义输入, 那么我们程序最好写成递归建树,如果有重量是0, 那么就递归建左子树或者右子树 , 如果是叶子节点的父节点(这个天平下面没天平), 那么就判断左右是否相等返回即

UVa 12166(字符型二叉树的dfs)

一.题目 [PDF Link] A mobile is a type of kinetic sculpture constructed to take advantage of the principle of equilibrium. It consists of a number of rods, from which weighted objects or further rods hang. The objects hanging from the rods balance each o

6-9 天平 uva839

这题十分巧妙!!代码精简!强大的递归!!! 边读边判断   先读到底部  慢慢往上判断   难点在于传递w1+w2 有一个比LRJ更加简便的方法  return传递  全局变量判断 #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <cmath> using namespac

[leetcode 周赛 148] 1145 二叉树着色游戏

目录 1145 Binary Tree Coloring Game 二叉树着色游戏 描述 思路 代码实现 1145 Binary Tree Coloring Game 二叉树着色游戏 描述 有两位极客玩家参与了一场「二叉树着色」的游戏.游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同. 游戏从「一号」玩家开始(「一号」玩家为红色,「二号」玩家为蓝色),最开始时, 「一号」玩家从 [1, n] 中取一个值 x(1 <= x <

dfs 排列组合——找所有子集

17. 子集 中文 English 给定一个含不同整数的集合,返回其所有的子集. 样例 样例 1: 输入:[0] 输出: [ [], [0] ] 样例 2: 输入:[1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 挑战 你可以同时用递归与非递归的方式解决么? 注意事项 子集中的元素排列必须是非降序的,解集必须不包含重复的子集. 时间复杂度是O(2^n),本质就是在做二叉树的dfs.[1,2,3]举例: root /