UVa679 Dropping Balls (二叉树)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa679 Dropping Balls (二叉树)相关的知识,希望对你有一定的参考价值。

链接:http://acm.hust.edu.cn/vjudge/problem/19499
分析:二叉树的递归定义:二叉树要么为空,要么有根节点、左子树和右子树组成,而左右子树分别是一棵二叉树。本题来说,对于一个根节点,当奇数次小球到达时,小球往左走,k*=2,且当前到达左子树小球个数是到达根节点小球个数的(I+1)/2,当偶数次小球到达此根节点时,小球往右走,k=k*2+1,然后当前往右边走到达右子树根结点的小球总个数为I/=2,就这样递归进行直到到达叶子结点。

 1 #include <cstdio>
 2 
 3 int main() {
 4     int T;
 5     scanf("%d", &T);
 6     while (T--) {
 7         int D, I;
 8         scanf("%d%d", &D, &I);
 9         int k = 1;
10         for (int i = 0; i < D - 1; i++) {
11             if (I % 2) { k *= 2; I = (I + 1) / 2; }
12             else { k = k * 2 + 1; I /= 2; }
13         }
14         printf("%d\n", k);
15     }
16     return 0;
17 }

 

以上是关于UVa679 Dropping Balls (二叉树)的主要内容,如果未能解决你的问题,请参考以下文章

Dropping Balls UVA - 679(二叉树的遍历)

UVa 679 - Dropping Balls二叉树思维题

UVa OJ 679 - Dropping Balls

UVa 679. Dropping Balls

小球下落 (Dropping Balls,UVA 679)

UVa-679 Dropping Balls