题目链接:
https://cn.vjudge.net/problem/UVA-839
题目大意:
有一个天平。每次给4个数字,分别是天平左边的重量, 力臂,右边的重量,力臂。如果左边重量为0,则左边下面就还有一个天平,具体情况由下一行给出。
如果每一架天平都是平衡的,则输出YES,否则输出NO。
大致思路:
由于题目的输入是递归写出,那么在写程序时也可以利用递归读入数据,然后从底向上进行判断。只要有一个天平不是平衡的,那么答案就是NO。
注意题目格式
代码:
#include<iostream>
using namespace std;
bool Solve(int &w)
{
int w1,d1,w2,d2;
bool left=true,right=true;//判断其左右的天平是否平衡的标志
cin>>w1>>d1>>w2>>d2;
if(!w1) left=Solve(w1);//若为0,进行递归
if(!w2) right=Solve(w2);
w=w1+w2;//为上一层,对重量进行统计
if(left&&right&&(w1*d1==w2*d2))
return true;
return false;
}
int main()
{
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
int w;
if(Solve(w))
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
if(t)
cout<<endl;
}
return 0;
}