uva839 天平问题

题意:天平的两端,每端的重量 wl 和 wr ,每端到中点的距离 dl 和 dr ,要满足wldl==wrdr才能保持天平平衡。天平的每端可以再系一个天平,该端的重量为该子天平的总重量。问最终天平是否能平衡。

给你一个杠杆两端的物体的质量和力臂,如果质量为零,则下面是一个杠杆,判断是否所有杠杆平衡

Sample I nput

1

0 2 0 4

0 3 0 1

1 1 1 1

2 4 4 2

1 6 3 2

Sample Output

YES

思路讲解:输入一串数据构成天平,判断该天平是否平衡,利用引用传值,w的值永远为子天平的总重,可以大大简化代码量。
题意:输入一个树状天平,根据力矩相等的原则判断是否平衡。就是W1D1= W2D2,其中W1,W2分别为左右两边砝码的重量,D为距离。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
using namespace std;
bool solve(int &w){
int w1,r1,w2,r2;
cin>>w1>>r1>>w2>>r2;
bool b1=true,b2=true;//!!!
if(!w1) b1=solve(w1);
if(!w2) b2=solve(w2);
w=w1+w2;
return b1&&b2&&(w1*r1==w2*r2);}
int main(){
int k;
cin >> k;
while (k--){
int w;
if (solve(w))
cout << "YES" << endl;
else
cout << "NO" << endl;
if (k)
cout << endl;
}
return 0;}

参考博客
https://blog.csdn.net/WU5151/article/details/50435529
http://www.voidcn.com/article/p-woxgpgdn-zy.html
https://blog.csdn.net/xiaojiao_6/article/details/74931249