UVA - 839 Not so Mobile
2017-09-23 23:56
344 查看
/* 此题代码看似极其简短,但要理解,还是需要想比较久,考虑清楚代码的真正含义。 值得重做,对于递归的理解很有帮助! 该题最重要的部分是,递归输入;并且运用引用,使得在输入时,便可完成平衡的判断 这题的引用的使用是否巧妙,值得好好体会,时不时重看! */
#include <iostream>
using namespace std;
//输入一个子天平,返回天平是否平衡,参数W修改为子天平的总重量
bool solve(int &W)
{
int W1, D1, W2, D2;
bool b1 = true, b2 = true;
cin >> W1 >> D1 >> W2 >> D2;
if (!W1) b1 = solve(W1);
if (!W2) b2 = solve(W2);
W = W1 + W2; //其实如果只考虑最上层的天平,这步似乎没什么意义;但其实它的意义在于,在当前是递归到一个子天平的情况时,就要重新输入子天平所在处的左右天平,如果有了这句代码,参数 W1 或者 W2,最终就能变为子天平上的两个左右天平的总重量。如此,等到判断 D1 * W1 == D2 * W2时,W1 和 W2就都不会是0了,而是该子天平下所有子天平的总重量(如果有的话,没有子天平,就还是它本身的质量,总之不会是0,而是它自己或是自己所有子天平的重量)
return b1 && b2 && (W1 * D1 == W2 * D2);
}
int main()
{
int T, W;
cin >> T;
while (T--)
{
if (solve(W)) cout << "YES" << endl;
else cout << "NO" << endl;
if (T) cout << endl;
}
return 0;
}
相关文章推荐
- UVa 839 - Not so Mobile
- uva 839 Not so Mobile
- UVa 839 Not so Mobile(树的递归输入)
- ACM篇:UVa 839 -- Not so Mobile
- uva 839 Not so Mobile(抽象意义上的建树)
- uva 839 not so mobile——yhx
- UVa839 Not so Mobile
- UVa 839 Not so Mobile
- UVA 839 Not so Mobile(二叉树|DFS)
- UVa 839 - Not so Mobile【递归】
- uva 839 Not so Mobile-S.B.S.
- UVa 839 Not so Mobile
- UVA 839 Not so Mobile (递归建立二叉树)
- UVa 839 - Not so Mobile
- uva 839 Not so Mobile
- uva 839 (Not so mobile)天平 ---递归输入
- UVA 839 Not So Mobile 【递归+树】
- Not so Mobile UVA - 839
- uva 839 Not so Mobile-S.B.S.
- 天平 (Not so Mobile, UVa 839)