题解 UVA839 【天平 Not so Mobile】

根据题意模拟即可,具体做法如下:

  1. 输入 44 个数。

  2. 如果有左子树,递归判断左子树,回到 11;如果有右子树,递归判断右子树,回到 11

  3. 将此时的左右子树重量累加到上一层。

  4. 返回左右子树是否平衡&&本身是否平衡。

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:大家千万不要犯和我一样的白痴错误。

posted @ 2021-02-14 16:19  luckydrawbox  阅读(13)  评论(0)    收藏  举报  来源