`
mybwu_com
  • 浏览: 200112 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

算法练习--小球下落

 
阅读更多
小球下落:
完全二叉树,最大深度D。所有节点从上到下从左到右编号为1,2,3...2的D次方-1.在节点1处放一个小球,它会往下落。每个内节点上都由一个开关,初始全部关闭,当每次有小球落到一个开关上时,它的状态都会改变。当小球达到一个内节点时,如果该节点上的开关关闭,往左走,否则往右走,直到遍历到叶子节点。
问题,输入 深度和小球个数
输出节点编号


输入 4 2 输出 12
输入 3 4 输出 7


参考实现


function f(depth,count){


var states = new Array();
var r;


for(var i = 0;i < count;i++){
for(var root = 1;root <Math.pow(2,depth-1);){
if(states[root] && states[root].open){
states[root].open = false;


root = root * 2 + 1;
}
else{
if(!states[root]){states[root]={open:true};}
else if(states[root].open == false){states[root].open = true;}


root = root * 2;


}


r=root;
}


}


return r;
}


console.log(f(4,2));
console.log(f(3,4));
console.log(f(10,1));
console.log(f(2,2));
console.log(f(8,128));
console.log(f(16,12345));


分享到:
评论

相关推荐

    c算法经典例题

    ### C算法经典例题知识点解析 #### 知识点一:使用1至4构成无重复数字的三位数 ...以上是对这些经典C语言算法例题的核心知识点的总结和解析,通过这些练习可以帮助初学者更好地掌握C语言编程的基础知识和常用算法。

    Python解决抛小球问题 求小球下落经历的距离之和示例

    `totalDistance`方法是一个递归函数,用于计算单个小球下落并反弹的总距离。它接受两个参数:`total`表示当前累计的距离,`statDis`表示当前小球的高度。每次调用`totalDistance`,都将`statDis`减半,然后将两倍的`...

    C语言100个算法经典例题

    模拟物体运动,如小球自由下落,需要应用物理学原理,如重力加速度公式,并将其转化为编程语言中的数学表达式。 #### 知识点二十一至四十:高级编程概念和实践 从程序22到程序40涵盖了更广泛的编程概念和技术,包括...

    C语言算法例题

    程序20:小球自由下落。这是物理和数学结合的问题,涉及到重力加速度和下落时间的计算。 程序22:两个乒乓球队进行比赛。可能涉及到数组和循环的使用来记录和计算比赛结果。 程序23:打印出如下图案(菱形)。这是...

    100个经典例题(C语言).doc

    #### 【程序20】小球自由下落 - **知识点**: - 物理公式 - 数学运算 - **描述**:根据自由落体的物理公式计算小球落地所需的时间。 #### 【程序22】两个乒乓球队进行比赛 - **知识点**: - 随机数生成 - 循环...

    C语言游戏,实现微信小游戏欢乐球球

    在这个游戏中,C语言被用来处理游戏逻辑,如小球的运动轨迹计算、挡板的旋转和碰撞检测等核心算法。 Easy_X插件则提供了图形绘制和用户交互的接口。例如,它可以帮助开发者创建游戏窗口、加载图像资源(如背景图片...

    Plinko-Pro-33

    这款游戏中,玩家通过控制一个小球下落的轨迹,尽可能地获得更高的分数。在这款看似简单的游戏中,蕴含着丰富的JavaScript技术应用,包括DOM操作、事件处理、动画效果以及用户交互设计等。接下来,我们将深入探讨...

    C语言编程题练习.pdf

    30. 小球落地问题,累加每次下落和反弹的高度,计算总长度和第10次反弹高度。 31. 输入答案校验,使用if条件判断答案是否正确。 32. 使用冒泡排序算法对数组进行排序,使用两层for循环实现。 33. 输出字符,根据...

    Java计算球从100米高度自由落下问题

    在编程学习的过程中,初学者通常需要理解循环控制、变量操作以及基本的算法结构,而解决物理问题的编程练习则可以加深他们对这些概念的理解。通过动手编写代码来模拟物理现象,学习者可以在实践中更好地掌握编程技能...

    木板打球程序

    【标题】"木板打球程序"是一个基于VB(Visual Basic)开发的课程作业,主要涉及人机交互元素,用户可以通过鼠标操作控制一个“木板”来接住屏幕中下落的多个“小球”。该程序可能是一个简单的休闲游戏或者教学示例,...

    京东2016研发工程师编程题及答案及答案.pdf

    给定四个整数A, B, C, D,表示四个小球从不同高度落下反弹的高度。每个球落地后反弹回上次下落高度的一半,直至完全落地。求所有球落地前后的总距离。题目中给出的错误解决方案仅仅是将四个高度相加乘以4,实际上...

    Visual C++开发实战1200例 第二章

    实例053小球下落 实例054再现乘法口诀表 实例055判断名次 2.5 循环的数学应用 实例056序列求和 实例057简单的级数运算 实例058求一个正整数的所有因子 实例059一元钱兑换方案 2.6 趣味计算 实例060加油站加油 实例...

    C程序范例宝典(基础代码详解)

    实例047 小球下落问题 58 实例048 灯塔数量 59 实例049 买苹果问题 60 实例050 猴子吃桃 61 实例051 老师分糖果 62 实例052 新同学的年龄 63 实例053 百钱百鸡问题 64 实例054 彩球问题 65 实例055...

    c语言经典案例

    实例037 小球下落问题 48 实例038 巧分苹果 49 实例039 老师分糖果 50 实例040 IP地址形式输出 51 实例041 特殊的完全平方数 52 实例042 一数三平方 54 实例043 求等差数列 55 实例044 亲密数 56 实例045 自守数 57 ...

Global site tag (gtag.js) - Google Analytics