#include<iostream>
using namespace std;
bool solve(int& W) {
int W1, D1, W2, D2;
bool b1 = true, b2 = true;//先初始化成TRUE
cin >> W1 >> D1 >> W2 >> D2;
if(!W1) b1 = solve(W1);//如果W1为0则递归左子树
if(!W2) b2 = solve(W2);//如果W1为0则递归右子树,如果W1=W2=0则先遍历左子树然后遍历右子树
W = W1 + W2;
return b1 && b2 && (W1 * D1 == W2 * D2);//三个都为true则输出yes
}
int main() {
int T, W;//
cin >> T;
while(T--) {
if(solve(W)) cout << "YES\n"; else cout << "NO\n";//W只是个传值变量
if(T) cout << "\n";
}
return 0;
}
/*
总结:
本题的精彩之处使用了传值变量,考察了二叉树的递归遍历。
函数solve的最后是联合判断return,只有三个都为true才输出yes。
*/
天平
最新推荐文章于 2023-04-17 13:06:56 发布