关闭

Not so Mobile

标签: 编程
133人阅读 评论(0) 收藏 举报

【题目描述】
Before being an ubiquous communications gadget, a mobile was just a structure made of strings and wires suspending colourfull things. This kind of mobile is usually found hanging over cradles of small babies.
The figure illustrates a simple mobile. It is just a wire, suspended by a string, with an object on each side. It can also be seen as a kind of lever with the fulcrum on the point where the string ties the wire. From the lever principle we know that to balance a simple mobile the product of the weight of the objects by their distance to the fulcrum must be equal. That is Wl×Dl = Wr×Dr where Dl is the left distance, Dr is the right distance, Wl is the left weight and Wr is the right weight.
In a more complex mobile the object may be replaced by a sub-mobile, as shown in the next figure. In this case it is not so straightforward to check if the mobile is balanced so we need you to write a program that, given a description of a mobile as input, checks whether the mobile is in equilibrium or not.
【输入格式】
The input begins with a single positive integer on a line by itself indicating the number of the cases following, each of them as described below. This line is followed by a blank line, and there is also a blank line between two consecutive inputs.
The input is composed of several lines, each containing 4 integers separated by a single space. The 4 integers represent the distances of each object to the fulcrum and their weights, in the format: Wl Dl Wr Dr.
If Wl or Wr is zero then there is a sub-mobile hanging from that end and the following lines define the the sub-mobile. In this case we compute the weight of the sub-mobile as the sum of weights of all its objects, disregarding the weight of the wires and strings. If both Wl and Wr are zero then the following lines define two sub-mobiles: first the left then the right one.
【输出格式】
For each test case, the output must follow the description below. The outputs of two consecutive cases will be separated by a blank line.
Write YES if the mobile is in equilibrium, write NO otherwise.
【样例输入】
1

0 2 0 4
0 3 0 1
1 1 1 1
2 4 4 2
1 6 3 2
【样例输出】
YES
【分析】
递归,边读入边求解。

#include<iostream>
using namespace std;
bool solve(int& w)
{
    int w1,d1,w2,d2;
    bool b1=true,b2=true;
    cin>>w1>>d1>>w2>>d2;
    if (!w1) b1=solve(w1);
    if (!w2) b2=solve(w2);
    w=w1+w2;'
    return b1 && b2 && (w1*d1==w2*d2);
}
int main()
{
    int t,w;
    cin>>t;
    while (t--) {
        if (solve(w)) cout<<"YES\n"; else cout<<"NO\n";
        if (t) cout<<"\n";
    }
    return 0;
}
3
0
查看评论

uva 839 Not so Mobile(抽象意义上的建树)

Not so Mobile  Before being an ubiquous communications gadget, a mobile was just a structure made of strings and wires suspendin...
  • u011328934
  • u011328934
  • 2013-07-31 18:52
  • 1111

Not so Mobile

Not so Mobile Before being an ubiquous communications gadget, a mobile was just a structure made of strings and wires suspending colourf...
  • Rechard_chen
  • Rechard_chen
  • 2014-11-21 20:09
  • 635

UVa 839 - Not so Mobile

一开始想错了, 我把每一边看成一个结点,
  • u014247806
  • u014247806
  • 2014-05-01 10:12
  • 475

Uva-839 - Not so Mobile

Not so Mobile  Before being an ubiquous communications gadget, a mobile was just a structure made of strings and wires suspe...
  • Russian_Blue_Cat
  • Russian_Blue_Cat
  • 2015-08-30 17:10
  • 226

uva839 Not so Mobile (重建二叉树)

题意:天平的平衡条件 Wl * Dl == Wr * Dr。 题目给出的是 二叉树天平, 平衡条件是所有天平都要平衡。 大天平的W 是小天平两边的W总和(很明显嘛~ 不行你就受力分析下啊)。 思路:好了, 这题就无法逃脱建树的命运了。 递归建树, 然后递归判断是否平衡。每次读入一行, 如果...
  • MistKafka
  • MistKafka
  • 2013-07-27 16:06
  • 1345

UVa839-Not So Mobile

使用递归直接处理信息并建树,同时判断是否满足杠杆定理//UVa 839 #include <cstdio>bool flag;int build() { int wl, dl, wr, dr; scanf("%d%d%d%d", &wl, &a...
  • Walton_
  • Walton_
  • 2016-09-08 20:41
  • 102

uva839 not so mobile

#include using namespace std; //输入一个子天平,返回天平是否平衡,参数W修改为子天平的总重量 bool solve(int& W){ int W1, D1, W2, D2; bool b1 = true, b2 = true; cin ...
  • a197p
  • a197p
  • 2015-01-31 23:27
  • 287

Not so Mobile uva

水题。。不过貌似可以不建树。。。我还是建树了。。。。
  • u013451221
  • u013451221
  • 2014-04-16 01:13
  • 388

uva839 Not so Mobile 递归

题意:给你一个天平,判断力矩相等原则判断天平是否平衡,注意输入格式 采用递归(先序)方式输入,每个天平的格式为Wl,Dl,Wr,Dr,当Wl或Wr为0时,表示该输入一个子天平,接下来会描述这个天平,当Wr=Wl=0时,会先描述左子天平,然后是右子天平 输入时即可计算,注意引用参数的使用 #in...
  • dlutjwh
  • dlutjwh
  • 2017-06-06 09:18
  • 136

Not so Mobile UVA 839

这道题题意很好理解就是判断力矩平衡,一看题目就知道是要用递归dfs,但是陷进一个死胡同,在判断输入数字结束时纠结了很久,后面参考别人的代码发现完全不用考虑。哎·~太年轻。 #include using namespace std; int ok; int dfs() { i...
  • u011194165
  • u011194165
  • 2013-10-27 10:10
  • 452
    个人资料
    • 访问:237814次
    • 积分:3744
    • 等级:
    • 排名:第10211名
    • 原创:176篇
    • 转载:22篇
    • 译文:0篇
    • 评论:18条
    个人主页
    www.jrxblog.top 欢迎访问&交换友链!
    博客专栏