博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
100层高楼摔2个鸡蛋的问题
阅读量:4968 次
发布时间:2019-06-12

本文共 700 字,大约阅读时间需要 2 分钟。

一幢大楼共计100层,某种类型的鸡蛋从某一楼层及其以上楼层摔下来时会被打破,从该层楼(即临界楼层)以下楼层摔下该鸡蛋,鸡蛋不会出现破损。现给你2个完全一样的该种类型的鸡蛋,问:如何通过这2个鸡蛋找到该临界楼层?

 

答:不能用二分法:如果一个鸡蛋在50层碎了,另一个就要从最下面一层一层往上试。

我们大胆地估计一下,如果把100分成10段,那么要找到临界楼层,我们大致最多需要20次测试,我们通过2,12,22,32,...,不断地试探,确定了某个区间,就进入该区间逐个测试。试看:如果临界楼层在10层一下,我测试2楼的时候鸡蛋正常,测试12楼的时候鸡蛋破了1个鸡蛋,我们就回头从3楼,4楼测试到11楼,直到第2个鸡蛋被摔破,就测试出来了(如果鸡蛋不摔破,那么临界楼层就是第12楼),总共试探了11次。同理,如果临界楼层在90几楼,那么,我们从2,12,22,32,...,不断测试应该不超过20次就可以测试出来。到目前为止我们已经取得比较好的结果了。

我们可以不以平均一下,不管临界楼层是在2~12之间还是90~100之间都能在一个比较平均的测试次数下面来把它测试出来呢?试想,我们在90几的临界楼层时,区间大小如果都是固定的,那么对于临界楼层比较大的情形,就多产生了测试次数。我们很容易就想到,可以设想,让区间大小从前往后,逐步减少,让相邻的两个区间,楼层较低的区间段比楼层号较高的区间段多1,这样就保证了无论临界楼层在哪个区间段,我们总能通过同样的试探次数将能将其找出来,平均来说是最优的方案。

 

转载于:https://www.cnblogs.com/Donnnnnn/p/5720729.html

你可能感兴趣的文章
JavaWeb之JSON
查看>>
HOT SUMMER 每天都是不一样,积极的去感受生活 C#关闭IE相应的窗口 .
查看>>
windows平台上编译mongdb-cxx-driver
查看>>
optionMenu-普通菜单使用
查看>>
2016-2017-2点集拓扑作业[本科生上课时]讲解视频
查看>>
appium(13)- server config
查看>>
IIS负载均衡-Application Request Route详解第六篇:使用失败请求跟踪规则来诊断ARR...
查看>>
管理信息系统 第三部分 作业
查看>>
[Leetcode Week13]Search a 2D Matrix
查看>>
查看端口占用cmd命令
查看>>
2019.01.17王苛震作业
查看>>
清除浮动
查看>>
PayPal(贝宝)支付接口、文档、IPN
查看>>
ORACLE 10G R2_执行计划中cost cardinality bytes cpu_cost io_cost解释
查看>>
本地存储
查看>>
MP3的播放与停止
查看>>
牛客(59)按之字形顺序打印二叉树
查看>>
JavaScript 图表库 xCharts
查看>>
Android项目的目录结构
查看>>
C++中“引用”的底层实现
查看>>