Not so Mobile UVA - 839】的更多相关文章

题意:判断某个天平是否平衡,输入以递归方式给出. 题解:递归着输入,顺便将当前质量作为 &参数 维护一下,顺便再把是否平衡作为返回值传回去. 坑:最后一行不能多回车 附:天秀代码 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; bool solve(int &w) { int w1, d1, w2, d2; cin >> w1 >> d1 >> w…
题目描述: 题目思路: 1.DFS建树 2.只有每个树的左右子树都平衡整颗树才平衡 #include <iostream> using namespace std; bool solve(int& w) { int d1,w1,d2,w2; cin >> w1 >> d1 >> w2 >> d2 ; bool b1 = true ,b2 = true ; if(!w1) b1 = solve(w1) ; if(!w2) b2 = solv…
题目链接:https://vjudge.net/problem/UVA-839 题目大意:输入一个树状天平,根据力矩相等原则,判断是否平衡.  如上图所示,所谓力矩相等,就是Wl*Dl=Wr*Dr.  其中Wl和Wr分别为左右两边砝码的重量,D为距离 采用递归的方式输入:每个天平的格式为Wl,Dl,Wr,Dr   当Wl或Wr为0时  表示该"砝码" 实际是一个子天平  接下来会描述这个子天平.当Wl=Wr=0   会先描述左子天平  然后是右子天平. 思路:解决本道题之前一定要先弄请…
#include<iostream> using namespace std; int solve(int &W) /*这里一定要用引用,为了赋给它值*/ { int wl, dl, wr, dr; cin >> wl >> dl >> wr >> dr; bool f1 = true, f2 = true; if(!wl) f1 = solve(wl); /*沿着这个子天平找下去*/ if(!wr) f2 = solve(wr); W…
UVA.839 Not so Mobile ( 二叉树 DFS) 题意分析 给出一份天平,判断天平是否平衡. 一开始使用的是保存每个节点,节点存储着两边的质量和距离,但是一直是Runtime error.也不知道到底是哪里出了问题,后来发现直接判断当前是否平衡,若下面还有节点,接着递归调用dfs判断,这样一来省去了存储节点所需要的空间和时间,效率大大提升. 代码总览 #include <iostream> #include <cstdio> #include <cstring…
UVa 839 Not so Mobile(树的递归输入) 判断一个树状天平是否平衡,每个测试样例每行4个数 wl,dl,wr,dr,当wl*dl=wr*dr时,视为这个天平平衡,当wl或wr等于0是,下一行将是一个子天平,如果子天平平衡,wl为子天平的wl+wr ,否则整个天平不平衡 #include<iostream> using namespace std; bool solve(int &w) { int wl,dl,wr,dr; cin>>wl>>dl…
Not so Mobile  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.       (picture copy failed…
Before being an ubiquous communications gadget, a mobilewas just a structure made of strings and wires suspendingcolourfull things. This kind of mobile is usually found hangingover cradles of small babies.The gure illustrates a simple mobile. It is j…
0.最后输出的yes no的大小写 1.注意 递归边界   一直到没有左右子树 即b1=b2=false的时候 才返回 是否 天平平衡. 2.注意重量是利用引用来传递的 #include <iostream> using namespace std; bool solve(int& W) { bool b1=true,b2=true; int wl,dl,wr,dr; cin>>wl>>dl>>wr>>dr; ) b1=solve(wl)…
题意: 递归的方式输入一个树状天平(一个天平下面挂的不一定是砝码还可能是一个子天平),判断这个天平是否能满足平衡条件,即W1 * D1 == W2 * D2. 递归的方式处理输入数据感觉很巧妙,我虽然能理解,但自己是写不出来的. 这里的参数是传引用,所以是在递归回来的时候才会赋值的. //#define LOCAL #include <iostream> using namespace std; bool solve(int& w) { int w1, d1, w2, d2; bool…