题意:

给定一个天平长度 输入格式为

wl dl wr dr

分别代表天平左边长度,左边重量, 右边长度, 右边重量。

如果重量为0, 说明下面还有一个天平, 递归给出。

样例输入:
1
0 2 0 4
0 3 0 1
1 1 1 1
2 4 4 2
1 6 3 2

如果天平是左右重量相等的 输出YES 否则输出NO。

分析:

既然以递归的定义输入, 那么我们程序最好写成递归建树,如果有重量是0, 那么就递归建左子树或者右子树 , 如果是叶子节点的父节点(这个天平下面没天平), 那么就判断左右是否相等返回即可(也可建一个全局变量, 一个不满足就可以输出NO了)。 我的程序是把树建造出来再判断, 有点冗余。

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6;
struct Node{
int wl,dl,wr,dr;
int left, right;
Node():wl(),dl(),wr(),dr(){}
};
Node tree[maxn];
const int root = ;
int cnt = , ok;
int build(int u){
int wl,dl,dr,wr;
scanf("%d %d %d %d",&wl,&dl,&wr,&dr);
tree[u].wl = wl;
tree[u].dl = dl;
tree[u].wr = wr;
tree[u].dr = dr;
if(!wl) {
tree[u].left = ++cnt;
build(cnt);
}
if(!wr) {
tree[u].right = ++cnt;
build(cnt);
}
}
int post(int u){
if(!tree[u].wl) {
tree[u].wl = post(tree[u].left);
}
if(!tree[u].wr) {
tree[u].wr = post(tree[u].right);
}
if(tree[u].wl * tree[u].dl != tree[u].wr * tree[u].dr)
ok = ;
return tree[u].wl + tree[u].wr;
}
int main(){ int T;
scanf("%d", &T);
int flag = ;
while(T--){
if(!flag){
flag = ;
}
else printf("\n");
cnt = root;
build(root);
ok = ;
post(root);
printf("%s\n",ok ? "YES":"NO");
}
return ;
}

最新文章

  1. Servlet技术(使用myeclipse)
  2. 当利用pip安装模块出现错误时咋办
  3. 关于JS的数据类型的一些见解
  4. NBUT 1602 Mod Three(线段树单点更新区间查询)
  5. 2017年1月7日 星期六 --出埃及记 Exodus 21:33
  6. .NET-提取字符串实践总结
  7. java多线程之队列
  8. WebGIS基础复习笔记
  9. ARC代码和非ARC代码 混用
  10. Redis 集成Spring(spring-data-redis)
  11. 牛客网编程练习之PAT乙级(Basic Level):1032 选大王
  12. Python(Django)项目与Apache的管理交互
  13. AE实现拖拽
  14. jQuery中FormData的使用
  15. C#基础课程之四集合(ArrayList、List&lt;泛型&gt;)
  16. Linux 系统位数以及 Linux 软件位数查看
  17. 【转】全Javascript的Web开发架构:MEAN和Yeoman【译】
  18. java okhttp发送post请求
  19. 20155315 2016-2017-2 《Java程序设计》第九周学习总结
  20. BZOJ1221 [HNOI2001]软件开发 - 费用流

热门文章

  1. 使用VS2008,VS2010编译64位的应用程序
  2. GDI+ 加载PNG图片
  3. 状压DP+记忆化搜索 UVA 1252 Twenty Questions
  4. 关于k阶裴波那契序列的两种解法
  5. C. Unfair Poll 数学题,
  6. 外文翻译 《How we decide》赛场上的四分卫 第三节
  7. AJPFX关于Java Object类常用方法小总结
  8. AJPFX总结final、finally、finallize的区别
  9. (五)SpringIoc之Bean的作用域
  10. java websocket 简单使用【案例】