问题:
一种石头,在某一高度扔下就会碎,在这个高度以下不会碎,高度以上一定碎。现在有4个石头,1000层的楼房,需要测定这个石头破碎的高度。求最少多少次一定可以测出来。
分析:
这道题我们应反过来考虑,就是用a块石头扔b次至多一定可分辨层数X(a,b)。
先从最简装的一块石头考虑,很显然,
X(1,1) = 1
X(1,2) = 2
X(1,3) = 3
.
X(1,i) = i
再考虑二块石头,显而易见
X(2,1) = 1
对于X(2,2),我们可这样考虑,当我们扔第一次后,有两种可能:破和不破.
如果石头破了,则
1,我们还剩1块石头.
2,我们下一次只需检查下面的楼层.
3,我们还剩1次机会.
即我们还可分辨下面的 X(1,1) 层.
如果石头没破,则
1,我们还剩2块石头.
2,我们下一次只需检查上面的楼层.
3,我们还剩1次机会.
即我们还可分辨上面的 X(2,1) 层.
我们知道,X(1,1) = 1.所以我们第一次从第二层开始扔,如果石头破了,则再测试第一层.如果没破则再测试第三层.
所以用2块石头扔2次至多一定可分辨
1 + X(1,1) + X(2,1) = 1 + 1 + 1 = 3 层.
不失一般性,我们考虑
X(2,i)
对X(2,i),我们这样考虑,当我们扔第一次后,有两种可能:破和不破.
如果石头破了,则
1,我们还剩1块石头.
2,我们下一次只需检查下面的楼层.
3,我们还剩i-1次机会.
即我们还可分辨下面的 X(1,i-1) 层.
如果石头没破,则
1,我们还剩2块石头.
2,我们下一次只需检查上面的楼层.
3,我们还剩i-1次机会.
即我们还可分辨上面的 X(2,i-1) 层.
则
X(2,i) = 1 + X(1,i-1) + X(2,i-1)
接下来我们考虑
X(i1,i2)
同样,对 X(i1,i2),我们还是这样考虑,当我们扔第一次后,有两种可能:破和不破.
如果石头破了,则
1,我们还剩i1-1块石头.
2,我们下一次只需检查下面的楼层.
3,我们还剩i2-1次机会.
如果石头没破,则
1,我们还剩i1块石头.
2,我们下一次只需检查上面的楼层.
3,我们还剩i2-1次机会.
即
X(i1,i2) = 1 + X(i1-1,i2-1) + X(i1,i2-1)
很明显
无论你有几块石头,扔一次只能测试一层.
即
X(i,1) = 1.
这样,我们可制出如下表:
扔的次数: 1 2 3 04 05 06 007 008 009 010 011 012 013
分辨层数:
一块石头: 1 2 3 04 05 06 007 008 009 010 011 012 013
二块石头: 1 3 6 10 15 21 028 036 045 055 066 078 091
三块石头: 1 3 7 14 25 41 063 092 129 175 231 298 377
四块石头: 1 3 7 15 30 56 098 162 255 385 561 793 1092
五块石头: 1 3 7 15 31 62 119 218 381 637 1023
六块石头: 1 3 7 15 31 63 126 246 465 847 1485
也就是说用4块石头扔12次至多一定可分辨793层,扔13次至多一定可分辨1092层.
答案:
1000层的楼房,
用4块石头,扔13次一定可测试出来.
转载声明:本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kittyjie/archive/2009/10/27/4732415.aspx
分享到:
相关推荐
楼里面有一部可以通达所有楼层的电梯,每上一层楼需要uu秒钟,下一层楼需要dd秒,每个楼层会停ss秒。目前电梯在第N(1 \le N \le 200)N(1≤N≤200)层的地面上。若某个楼层没有上下需求,则电梯运行中会跳过该楼层。...
1. 如果只有1个鸡蛋,那么无论楼层有多少层,都需要尝试每层楼一次,所以D[1][j] = j。 2. 如果有j层楼,但没有鸡蛋,那么无法进行试验,所以D[i][1] = 1。 3. 对于更高层数的情况,我们需要找到一个分割点k,使得在...
例如,如果我们只有一个鸡蛋,我们必须从第一层开始逐层测试,最坏情况下需要40次。如果有两个鸡蛋,我们可以使用二分法,最坏情况下需要 log2(40)+1 ≈ 6 次。对于三个鸡蛋,我们可以设计更复杂的策略,例如每次...
有一栋楼共100层,一个鸡蛋从第N层及以上的楼层落下来会摔破, 在第N层以下的楼层落下不会摔破。给你2个鸡蛋,设计方案找出N,并且保证在最坏情况下, 最小化鸡蛋下落的次数。 求鸡蛋承受楼层高度,java版
模拟程序还包含一个调度器(Scheduler),它通过随机设置两个时间开始每一天:第一个时间是一个人首次走到1层,并按下楼层按钮召唤电梯时间,第二个时间是一个人首次走到2层,并按下按钮召唤电梯时间。每个时间都是...
1. **输入信号处理**:FPGA需要能够正确识别8个按钮的输入状态,无论是单击还是持续按压,以及如何处理多个按钮同时被按下(多路复用)的情况。 2. **状态机设计**:电梯的运行状态可以抽象为一个有限状态机(FSM)...
在这个游戏中,玩家需要控制一个角色安全地通过一百层充满挑战的楼层。这个游戏不仅展示了C#语言的强大功能,还体现了C/S架构在游戏开发中的应用。 C/S模式是一种常见的软件架构,其中客户端(Client)负责与用户...
在四层楼电梯自动控制系统的设计中,主要目标是构建一个基于AT89C51单片机的硬件电路和相应的软件方案,以实现对电梯运行的智能管理。这个系统能够接收各楼层的信号请求,并根据这些请求进行电梯的上升、下降以及在...
2. **4层楼电梯控制程序**:这是一个简化版的电梯模型,只涵盖4个楼层。设计可能包括4个停靠站,每层一个,以及相应的上行和下行控制逻辑。 3. **FPGA电梯**:意味着这个VHDL模型将被实现到FPGA上。FPGA是一种可...
本设计主要探讨的是一个针对四层楼的电梯自动化控制系统的构建,旨在提高电梯运行效率,优化乘客体验,确保安全可靠。 首先,我们要理解电梯控制系统的核心原理。电梯控制系统一般基于微处理器或者PLC(可编程逻辑...
1. 指层程序设计:根据每层楼的召唤信号,编写程序来确定电梯的运行方向和目标楼层,包括一楼至四楼的指层与消号程序。 2. 轿内指令登记与消号程序设计:处理轿厢内的指令,如上行、下行请求,同样涵盖了一至四楼的...
根据文档内容,本文将详细解释选择高层住宅楼层的考量因素、不同楼层的优缺点以及对理想楼层的建议。 1. 最佳楼层的选择:根据文档,最佳楼层通常位于大楼总高度的1/3到2/3处。以21层楼高为例,即7-14层之间。在...
《电梯楼层系数确定原则.pdf》文件详细阐述了如何通过楼层系数这一机制来公平分摊电梯使用费用,其核心在于按照楼层高度合理设置系数,确保费用分配的公正性,同时兼顾业主的实际使用情况。 文件中提到,确定楼层...
设计一个6层电梯控制器电路,用数码管显示电梯所在楼层号,电梯初始状态为第一楼层;每楼层电梯外都有上、下楼请求开关,电梯内设有乘客到达楼层的请求开关、电梯所处楼层、上升模式及下降模式的指示;电梯每2秒升降...
本文将深入探讨使用欧姆龙CPM1A PLC设计和调试一个适用于三层楼电梯系统的具体过程。 首先,PLC的优势在于其强大的逻辑控制能力。它可以处理复杂的逻辑运算,实现电梯的精确运行。通过编程,PLC可以接收来自电梯...
"是男人就下一百层"是一款经典的休闲游戏,玩家需要操控角色不断向下探索,避开障碍物,挑战自己的极限。在Python编程环境下,我们可以利用Pygame库来开发这样的游戏。Pygame是Python的一个开源模块,专为游戏开发...
【标题】:“C语言-下一百层游戏” 在编程领域,C语言是一种广泛使用的、基础且高效的编程语言,尤其在系统编程、嵌入式开发以及游戏开发等方面有着重要的地位。"下一百层游戏"通常指的是一个经典的编程挑战,旨在...
2. **楼层指示电路**:使用FS1、FS2、FS3和FS4四个发光二极管分别代表一楼至四楼,直观显示电梯所在楼层。 3. **显示电路**:采用共阴极数码管配合CD4511译码器显示当前楼层信息。 4. **控制台电路**:包含启动...
"鸡蛋的硬度"问题,也被称为“鸡蛋掉落”问题,是一个典型的动态规划应用,涉及到最少的试验次数来确定在多少层楼高度鸡蛋会摔破。动态规划方法是通过建立状态转移方程,考虑在每个楼层投掷鸡蛋的最坏情况,从而找到...
在本案例中,我们面临着一个经典的优化问题——如何在考虑各种优惠组合的情况下,为顾客计算购买一系列商品所需的最少费用。这个问题可以通过动态规划来解决。 #### 问题设定 假设在一个商店里有几种商品,每种商品...