您的位置:首页 > 其它

UVA - 839 Not so Mobile

2016-07-28 16:08 267 查看
题目大意:树状天平。每一行输入 w1,d1,w2,d2,若 w1×d1 == w2×d2,则平衡。当 w 为 0,说明有一个子天平,w1,w2 同时为 0,下一行给出 w1 的子天平信息。

解题思路:递归输入,同时判断,不平衡时返回 0。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
int f(int& w) {
int w1, d1, w2, d2;
int l = 1, r = 1, tag = 1;
scanf("%d%d%d%d", &w1, &d1, &w2, &d2);
if (!w1) l = f(w1);
if (!w2) r = f(w2);
w = w1 + w2;
if (w1 * d1 != w2 * d2) tag = 0;
return l && r && tag;
}
int main() {
int T, w = 1;
scanf("%d", &T);
while (T--) {
printf(f(w)?"YES\n":"NO\n");
if (T) printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva 递归