题目链接:https://vjudge.net/problem/UVA-839
题意:一个天平平衡的条件是D1*W1=D2*W2,D1D2分别是天平的力矩,W1W2分别是天平两边重物的质量。
递归方式输入每个天平的W1,D1,W2,D2。当W1为0时,会有一个左子天平;同理W2为0时有个右子天平。
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<vector>
#include<stack>
#include<queue>
#include<algorithm>
#include<sstream>
#define inf 0x3f3f3f3f
#define ll long long
using namespace std;
bool flag;
int solve()//输入根节点并创建二叉树并返回根节点的值,是所有重物之和
{
int w1,w2,d1,d2;
cin>>w1>>d1>>w2>>d2;
if(!w1)
w1=solve();
if(!w2)
w2=solve();
if(w1*d1!=w2*d2)
flag=1;
return w1+w2;
}
int main()
{
int T;
cin>>T;
while(T--)
{
flag=0;
solve();//递归输入会自动判断出应该停止输入的位置,因为没有子树可以创建了
if(flag==0)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
if(T)
cout<<endl;
}
return 0;
}