输入方式以递归方式定义, 因此编写一个递归过程进行输入比较自然。事实上,在输入的过程中就能完成判断。由于使用引用传值,代码非常精简。
#include<bits/stdc++.h>
using namespace std;
bool solve(int &W)//W随着递归过程随时更新
{
int W1, D1, W2, D2;
bool b1=true, b2=true;
cin>>W1>>D1>>W2>>D2;
if(!W1) b1=solve(W1);//如果W1 W2为0,递归判断子天平
if(!W2) b2=solve(W2);
W=W1+W2;
return b1 && b2 && (W1*D1==W2*D2);
}
int main()
{
int T, W;//参数W表示为子天平的总重量
cin>>T;
while(T--)
{
if(solve(W)) cout<<"YES\n";
else cout<<"NO\n";
if(T) cout<<"\n";
}
return 0;
}