
C/C++:小球下落问题解决方案(包含详细注释)。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
给定一棵深度为 *depth* 的满二叉树,并按照根结点开始自上而下,每一层从左到右,从 1 开始进行编号的规则,则该树中结点的编号序列将是 1, 2, 3, …, 2*depth* - 1。如图所示,一个深度为 4 的满二叉树的示例也予以展示。 现在,在一个结点 1 上放置一个小球,它将向下移动。二叉树中的每一个结点都配备一个开关,初始状态均为关闭;每当一个小球落到一个结点时,该结点上的开关状态将会发生改变。当一个小球到达某个结点时,如果该结点上的开关处于开启状态,则会向左移动;反之,则向右移动,直到到达叶子结点为止。 现在有 *number* 个小球依次从结点 1 开始下落。那么第 *number* 个小球最终将会落到哪个叶子结点的编号呢? 请根据满二叉树的深度 *depth* (其中 *depth* ≤ 10) 以及小球的数量 *number* 来输出最后一个小球所处叶子结点的编号。例如:如果输入为 4 和 2,输出结果将是 12;如果输入为 3 和 4,输出结果将是 7;如果输入为 10 和 1,输出结果将是 512;如果输入为 2 和 2,输出结果将是 3;如果输入为 8 和 128,输出结果将是 255。
全部评论 (0)
还没有任何评论哟~


