递归输入,那么就沿着这个的思路,一边读入一边判断。这里使用了引用传值,所以说代码十分精简。
对于这个int solve(int & w )函数,有两个作用
1.返回一个bool值,代表是否平衡。
2.传引用修改w,使传入的值被修改为子天平的总重量,就是这个天平的重量。
这个题主要是递归
#include<iostream>
#include<cstdio>
using namespace std;
bool solve(int & w)
{
int w1,d1,w2,d2;
cin>>w1>>d1>>w2>>d2;
bool b1=true,b2=true;
if(!w1) b1=solve(w1);
if(!w2) b2=solve(w2);
w=w1+w2;
if(b1&&b2&&(w1*d1==w2*d2))
return true;
else return false;
}
int main(void){
int t,w;
scanf("%d",&t);
while(t--){
if(solve(w)) printf("YES\n");else printf("NO\n");
if(t) printf("\n");
}
return 0;
}