UVA 839

来源:互联网 发布:网络在线平交流平台 编辑:程序博客网 时间:2024/05/18 04:45

题目大意:输出n个天平树,判断是否平衡,重1*距1 == 重2*距2。

解题思路:递归输入,判断返回值知否为1。刚开始以为只要每个有重物的地方可以平衡就好了...然后wa了。看了小紫,补充了一个累积下面子树的参数。

ac代码:

#include <iostream>using namespace std;int dfs(int &w){int left=1, right=1, a[4];for (int i=0; i<4; i++)scanf("%d", &a[i]);if (a[0] == 0)left = dfs(a[0]);if (a[2] == 0)right = dfs(a[2]);w = a[2] + a[0];if (right && left && a[0]*a[1] == a[2]*a[3])return 1;return 0;}int main(){int n, w;scanf("%d", &n);while (n--){if (dfs(w))printf("YES\n");elseprintf("NO\n");if (n)printf("\n");}return 0;}
原创粉丝点击