你拿着两个鸡蛋站在 100 层的大楼上。鸡蛋或许结实到从楼顶掉下也不会摔破。或许很易碎,在一楼摔下就破碎。

你拿着两个鸡蛋站在 100 层的大楼上。鸡蛋或许结实到从楼顶掉下也不会摔破。或许很易碎,在一楼摔下就破碎。
请问最少试验多少次可以确保找出鸡蛋不会被摔碎的最高楼层?

注意:
1、只有两个蛋
2、确保找出

一开始,我们先用猜的吧:
我猜测,鸡蛋不会被摔碎的最高楼层是27层,于是从27层摔了一个鸡蛋下去。
结果有两种:
1、鸡蛋碎了。那么,鸡蛋不会被摔碎的最高楼层,在第1层至第27层之间。此时只剩下一个蛋了。为了确保找出,这个蛋,就不能猜了。因为,万一又猜错了,就没有鸡蛋可以试验,也就无法确保找出鸡蛋不会被摔碎的最高楼层了。那要怎么办呢?很简单,从第1层开始试验,如果第1层就碎了,就已经能得出结论了,即第1层就会摔碎。而如果从第1层摔下去没碎,那就第二层,第三层...直到在谋一层摔碎为止,这样就能确保得出,鸡蛋不会被摔碎的最高楼层。因为我们一开始猜测的是27层,而27层时碎了一个鸡蛋。第二个鸡蛋从第1层开始,往上试验,最多试验到第26层,也就是26次,加上猜的那次,最多27次确保找出来。请接着看第二种结果
2、第27层鸡蛋没碎。那么,鸡蛋不会被摔碎的最高楼层,在第27至100层之间,同上,仍然要从低层的开始,往上试验,也就是,第2个鸡蛋,从28层开始,往上到100层,直到某一层摔碎,这样,最多要试验73次
结论:如果采用猜测的方法,猜鸡蛋不会被摔碎的最高楼层是27层,那么,要确保找出来,需要试验73次(为什么试验次数取最大的?因为鸡蛋不会被摔碎的最高楼层你不知道,而要确保找出来,那么,小于73次,都是可能找出,而试验73次,则一定能找出,所以取最大试验次数,也就是能确保找出鸡蛋不会被摔碎的最高楼层的试验次数是73次)请接着往下看

因为上面猜测的是27层,得出需要试验73次才能确保找出。如果猜测的是50层呢?根据上面的分析,就是从1-49,51-100,这样的,最多只要50次,就能确保找出。

好像发现了什么:第一个猜测的楼层不同,最多试验次数也不一样(注意,你只有两个鸡蛋,第二个鸡蛋,绝对不能猜测,因为万一猜错,就没有鸡蛋可以试验,也就不能确保找出了,所以,第二个鸡蛋,必须从最低层开始摔,直到某层摔下,鸡蛋会碎,这样,就能确保找出鸡蛋不会被摔碎的最高楼层)

上面,我们一个猜测的最高楼层是27层时,最多需要试验73次,就能确保找出鸡蛋不会被摔碎的最高楼层
而第一个猜测的最高楼层是50层时,最多需要50次就可以了
那有没有办法,比50次更少呢?

假如我第一次猜的是第10层
如果第10层碎了,就从1-9,试验9次
如果第10层没碎,你还有两个完好的蛋,可以再猜一次
这次猜第20层
如果第20层碎了,就从11-19,试验9次
如果第20层没碎,你仍然还有两个完好的蛋,可以继续猜一次
30 层
40 层
.
.
.
100 层
这种方式,试验的最多次数是下面这种情况:
10层不碎(试验一次)、20层不碎(试验一次)...90层不碎(试验一次),100层碎了(试验一次)
那么试验次数就是 10 个“试验一次” + (91至99,从低层往上试验9次)
最多试验19次。比上面的50次少了很多

还有没有办法,让次数更少呢?

时间: 2024-10-07 09:46:25

你拿着两个鸡蛋站在 100 层的大楼上。鸡蛋或许结实到从楼顶掉下也不会摔破。或许很易碎,在一楼摔下就破碎。的相关文章

100层高楼摔2个鸡蛋的问题

一幢大楼共计100层,某种类型的鸡蛋从某一楼层及其以上楼层摔下来时会被打破,从该层楼(即临界楼层)以下楼层摔下该鸡蛋,鸡蛋不会出现破损.现给你2个完全一样的该种类型的鸡蛋,问:如何通过这2个鸡蛋找到该临界楼层? 答:不能用二分法:如果一个鸡蛋在50层碎了,另一个就要从最下面一层一层往上试. 我们大胆地估计一下,如果把100分成10段,那么要找到临界楼层,我们大致最多需要20次测试,我们通过2,12,22,32,...,不断地试探,确定了某个区间,就进入该区间逐个测试.试看:如果临界楼层在10层一

100层高楼摔2个鸡蛋的问题?

一幢大楼共计100层,某种类型的鸡蛋从某一楼层及其以上楼层摔下来时会被打破,从该层楼(即临界楼层)以下楼层摔下该鸡蛋,鸡蛋不会出现破损.现给你2个完全一样的该种类型的鸡蛋,问:如何通过这2个鸡蛋找到该临界楼层? 解: 关键:每一层都有可能是临界层,且可能性相同. 假设第一个鸡蛋从x层摔下破了,最多还需要x-1次尝试,一共x次: 第一个鸡蛋没破,再从x+x-1层摔下,如果破了,最多还需x-2次尝试,一共x次: 第一个鸡蛋没破,再从x+x-1+x-2层摔下,如果破了,最多还需x-3次尝试,一共x次:

100层的大楼,用2个玻璃球,确定在那层丢下玻璃球刚好会碎?【?】

有一栋100层高的大楼,给你两个完全相同的玻璃球.假设从某一层开始,丢下玻璃球会摔碎.那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层??? 解答如下: http://blog.csdn.net/lzshlzsh/article/details/5951447 投掷次数分布不均.按最坏情况估计,这种方法就多做了几次.为了使最坏情况的投掷数最小,我们希望无论临界段在哪里,总的投掷数都不变,也就是说投掷数均匀分布.      接下来的解决方案就很容易想出了:既然第一步(确定临界段)的

『HTML5挑战经典』是英雄就下100层-开源讲座(一)从天而降的英雄

是英雄就下100层是一款经典的手机小游戏,以前是在诺基亚手机上十分有名.今天我们就用HTML5和lufylegend一步步地实现它. 一,准备工作 首先,你需要下载lufylegend,下载地址如下: http://lufylegend.googlecode.com/files/lufylegend-1.7.0.rar 接着你需要了解lufylegend,API介绍如下: http://lufylegend.com/lufylegend/api 接下来我们准备几张图片: 人物图片 游戏背景 游戏

『HTML5挑战经典』是英雄就下100层-开源讲座(二)危险!英雄

本篇为<『HTML5挑战经典』是英雄就下100层-开源讲座>第二篇,需要用到开源引擎lufylegend,可以到这里下载: 下载地址:http://lufylegend.googlecode.com/files/lufylegend-1.7.1.rar API文档:http://lufylegend.com/lufylegend/api 却说我们的英雄能顺利地从天而降了,不过丝毫没有悬念,他一定会被摔死的,因为还没有跳板出现.我每次路过时都看到我们的英雄是边下降边大叫:help! help!然

是男人就下100层【第五层】——2048游戏

前言: 在"阳光小强"的实战系列博文<是男人就下100层>的上一层我们一起从零开始完成了我们自己的贪吃蛇游戏--CrazySnake,可能很多朋友还不过瘾,那么我们今天就来玩一玩最近一直比较火的2048游戏,让大家再过一把瘾.由于"阳光小强"目前并没有从事Android的游戏开发工作,所以这些游戏的实现并不需要很专业的游戏开发知识,如果你有Android的基础就可以一起来参与进来共同完成这个游戏.有些朋友可能就会说"这些小游戏,会不会有点简单,

是男人就下100层【第五层】——2048游戏从源码到发布市场

上一篇<是男人就下100层[第五层]--换肤版2048游戏>中阳光小强对2048游戏用自己的方式进行了实现,并分享了核心源码,这一篇阳光小强打算将该项目的所有源代码公开并结合这个实例在这篇文章中介绍一下如何添加广告和实现分享功能. 最终运行效果如下(更多运行效果请看<是男人就下100层[第五层]--换肤版2048游戏>): 一.如何实现换肤 换肤的思路其实很简单,在ActionBar中添加菜单,当用户选择某一个皮肤后就将当前的皮肤状态修改并保存到SharedPreference中,

超多经典 canvas 实例,动态离子背景、移动炫彩小球、贪吃蛇、坦克大战、是男人就下100层、心形文字等等等

超多经典 canvas 实例 普及:<canvas> 元素用于在网页上绘制图形.这是一个图形容器,您可以控制其每一像素,必须使用脚本来绘制图形. 注意:IE 8 以及更早的版本不支持 <canvas> 元素. 贴士:全部例子都分享在我的 GayHub - https://github.com/bxm0927/canvas-special 尤雨溪个人主页炫彩三角纽带效果,点击还可变换 GitHub源码 . Demo演示 知乎登录注册页动态离子背景效果 GitHub源码 . Demo演

【编程马拉松】【026-是男人就下100层】

[编程马拉松算法目录] [026-是男人就下100层][工程下载>>>] 1 题目描述 相信大家都听说过"是男人就下100层"系列游戏,游戏中包括多个长度和高度各不相同的平台,地面是最低的平台,高度为零,长度无限. 一个男人在开始的时候从高于所有平台的某处开始下落,它的下落速度始终为1米/秒.当他落到某个平台上时,游戏者选择让他向左或向右跑,跑动的速度也是1米/秒.当他跑到平台的边缘时会继续下落.要求每次下落的高度不能超过MAX米,不然就会摔死,游戏也会结束. 请帮忙