题解 UVA839 【天平 Not so Mobile】
根据题意模拟即可,具体做法如下:
-
输入 个数。
-
如果有左子树,递归判断左子树,回到 ;如果有右子树,递归判断右子树,回到 。
-
将此时的左右子树重量累加到上一层。
-
返回左右子树是否平衡&&本身是否平衡。
Code
#include<bits/stdc++.h>
using namespace std;
bool pd(int &w)//判断天平是否平衡
{
int w1,d1,w2,d2;
bool b1=true,b2=true;//左右子树是否平衡的值
cin>>w1>>d1>>w2>>d2;//第一步
if(!w1)b1=pd(w1);//第二步
if(!w2)b2=pd(w2);//第二步
w=w1+w2;//第三步
return b1&b2&(w1*d1==w2*d2);//返回的值是左右子树和本身是否平衡//第四步
}
int main()
{
int t,w=0;//这个0改成别的也行
cin>>t;
while(t--)
{
if(pd(w))cout<<"YES"<<endl;
else cout<<"NO"<<endl;//NO打错了WA了好几次QWQ
if(t)cout<<endl;//一大坑点
}
return 0;
}
PS:大家千万不要犯和我一样的白痴错误。

浙公网安备 33010602011771号