您的位置:首页 > 其它

UVa 839 (递归方式读取二叉树) Not so Mobile

2014-09-21 22:56 531 查看
题意:

递归的方式输入一个树状天平(一个天平下面挂的不一定是砝码还可能是一个子天平),判断这个天平是否能满足平衡条件,即W1 * D1 == W2 * D2.

递归的方式处理输入数据感觉很巧妙,我虽然能理解,但自己是写不出来的。

这里的参数是传引用,所以是在递归回来的时候才会赋值的。

//#define LOCAL
#include <iostream>
using namespace std;

bool solve(int& w)
{
int w1, d1, w2, d2;
bool ok1 = true, ok2 = true;
cin >> w1 >> d1 >> w2 >> d2;
if(!w1)    ok1 = solve(w1);
if(!w2)    ok2 = solve(w2);
w = w1 + w2;
return ok1 && ok2 && (w1*d1 == w2*d2);
}

int main(void)
{
#ifdef LOCAL
freopen("839in.txt", "r", stdin);
#endif

int T, w;
cin >> T;
while(T--)
{
if(solve(w))    cout << "YES\n";
else    cout << "NO\n";
if(T)    cout << endl;
}

return 0;
}


代码君
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: