分析:需要动态判断输入值,怎么破啊!没有一点思路。。。
看了刘大爷的代码,思路豁然开朗。
1.需要根据输入递归建树,直接递归
2.递归时要考虑到w的更新,所以每次引用w(比指针快)更新w,这样就达到了递归建树而且不停更新w的效果
#include <iostream>
#include <cstdio>
using namespace std;
bool solve(int &w)
{
bool l = true,r = true;
int wl,dl,wr,dr;
cin >> wl >> dl >> wr >> dr;
if(!wl) l = solve(wl);
if(!wr) r = solve(wr);
w = wl+wr;
return l && r && (wl*dl == wr*dr);
}
int main()
{
int C,W;
cin >> C;
while(C--) {
if(solve(W)) cout << "YES" << endl;
else cout << "NO" << endl;
if(C) cout << endl;
}
return 0;
}