递归输入与引用传值(UVa839 Not so Mobile)
题目的大意是一个树形天平,输入给出样例的个数,然后空一行,每行4个数W1,D1,W2,D2,分别代表天平左侧的重量、力臂和天平右侧的重量、力臂。如果W1或者W2为0,则代表该节点有左子树或右子树,如果W1,W2同时为0,则下一行先给出左子树,再下一行给出右子树,判断输入的天平是否平衡。
仔细分析,可以发现输入的方式是递归的,因为输入的数据其实是先序遍历一棵树的结果。这样我们就可以将输入修改成递归的,根据输入的数据,进行树的递归遍历。
这里我们注意到节点的重量为0,因此我们需要将节点的重量值加上它子树的重量,才能在节点这一层进行判断,所以用引用传值。
另外,比较复杂的输入格式我们可以直接用C++的cin来简化,同时注意中间有空行的小技巧,最后一个输出后不能有空行。
话不多说,代码如下:
#include<iostream>
using namespace std;
bool solve(int &w){ //如果平衡,返回true
bool sub1=true,sub2=true;
int w1,d1,w2,d2;
cin>>w1>>d1>>w2>>d2;
if(!w1)sub1=solve(w1);//让后续的子树的重量累计到分支节点上
if(!w2)sub2=solve(w2);
w=w1+w2; //累计到分支节点上
return sub1 && sub2 && (w1*d1 == w2*d2);
}
int main(){
int t,w;
cin>>t;
while(t--){
solve(w)?cout<<"YES\n":cout<<"NO\n";
if(t)cout<<endl;
}
}

递归输入与引用传值(UVa839 Not so Mobile)的更多相关文章
- php总结6——自定义函数、引用传值
6.1 自定义函数 function 函数名称(参数[=默认值],参数[=默认值]...){ 函数体 [return val]; } 1) 无参数无返回 2) 有参数无返回 3) 有参数有返回 函数中 ...
- Java基础必备 -- 堆栈、引用传值、垃圾回收等
在Java中,对象作为函数参数的传递方式是值传递还是引用传递?String str = "abc" 与 String str = new String("abc&quo ...
- PHP和CS的引用传值
PHP的引用传值 function change_value($num){ $num+=2; } $age = 3; change_value(&$age); echo $age; CS的引用 ...
- 从一次面试经历谈PHP的普通传值与引用传值以及unset
关于这个概念一般都会在PHP的第一堂课说变量的时候给介绍,并且我以前还给其他PHPer介绍这个概念.但是作为一个工作一段时间的PHPer的我,竟然在面试的时候一下子拿不定主意最后还答错了,很觉得丢脸( ...
- Python引用传值总结
Python函数的参数传值使用的是引用传值,也就是说传的是参数的内存地址值,因此在函数中改变参数的值,函数外也会改变. 这里需要注意的是如果传的参数类型是不可改变的,如String类型.元组类型,函数 ...
- PHP引用传值规范问题
在我上一篇: shopnc 商城源码阅读笔记--开篇概述 中,遇到了一个PHP引用传值导致的错误,情况大致如下: 在我查阅PHP官方文档 的中文版的时候 http://php.net/ma ...
- php引用传值
isset();判读值是否值在 unset();取消变量 <?php$a=array("a","b","c");$b=$a;$b[2] ...
- php普通传值和引用传值 (相当通俗易懂的一篇讲解)
首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...
- foreach 引用传值&
foreach 引用传值& php 怎么在foreach中循环数组 ,的时候添加元素跟值 foreach($arr as $key => &$vo){ //注意,由于上面遍 ...
随机推荐
- android开发中常犯的几个错误整理
新手程序猿,在开发中难免会犯各种各样的错误,以下是整理的一些android开发中常见的错误,一起来看看吧. 1.避免将多个类放在一个文件夹里面,除非是一次性使用的内部类. 就是一个文件,最好给分它同名 ...
- 【题解】WC2008游览计划
写的第一道斯坦纳树的题目.斯坦纳树在信息学中的应用一般为:在\(n\)个点之间给定\(k\)条边并相应的边权,求在保证给定\(m\)个点联通的条件下的最小边权和.解决此类问题的方法即为SPFA + 状 ...
- axios超时重发
axios的超时是在response中处理的,所以要在response中添加拦截器: axios.interceptors.response.use(undefined, function axios ...
- 你对javascript的原生操作或者工具了解多少呢?
1.有一个长度未知的数组a,如果它的长度为0就把数字1添加到数组里面,否则按照先进先出的队列规则让第一个元素出队. 分析:这道题主要是考核了数组的队列方法和栈方法.另外,原题还有字数限制的,只有在字数 ...
- ionic2-键盘覆盖输入框和返回键问题解决方案
http://blog.csdn.net/u012979009/article/details/52514892有遇到这个问题的去这个地址看
- MySQL:BlackHole
MySQL:BlackHole 顾名思义BlackHole就是黑洞,只有写入没有输出.现在就来实验一下吧 首先查看一下MySQL支持的存储引擎 mysql> show engines;+---- ...
- Leetcode 45. Jump Game II(贪心)
45. Jump Game II 题目链接:https://leetcode.com/problems/jump-game-ii/ Description: Given an array of non ...
- 设置edittext的样式
1.在res->drawable编写 <?xml version="1.0" encoding="utf-8"?> <shape xml ...
- Oulipo HDU - 1686
The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e ...
- SpringMVC——说说视图解析器
学习SpringMVC——说说视图解析器 各位前排的,后排的,都不要走,咱趁热打铁,就这一股劲我们今天来说说spring mvc的视图解析器(不要抢,都有位子~~~) 相信大家在昨天那篇如何获取请 ...