http://www.voidcn.com/article/p-cdzbhnxv-gv.html


有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层??

解题思路:

假如只有一个球,那很显然,只有一个办法:从第一层开始投,如果没碎再试第二层、第三层.....现在有两个球,我们应该利用第一个球缩小临界楼层所在的楼层范围,可能会想到第一个球先从50层开始投,如果碎了,再用最后一个球从第一层开始投,最多到49楼肯定可以找到临界楼层,如果没碎那就说明临界楼层在50-100中,此时继续尝试75楼....可惜,上面的方法并非是最好的。因为最坏情况的投掷次数分布不均匀。比如,如果50楼碎了,此时最坏情况下需要尝试50次,如果50楼没碎,而75层不管是否碎了,最坏情况也只需要尝试25次,也就是说,50楼投掷结果不同,所需最坏情况下的次数也不同,这就是分布不均匀的意思,那是否有办法让其分布均匀,也就是说假如在f层投,不管碎还是不碎,继续时最坏情况所需次数也是一样的。这样才能使最坏情况下所需投掷次数达到最小。假设一开始从第k层投,如果坏了,那么第二个球可以在剩下的k-1层一定能用k-1次确定哪层坏,再加上第k层的那次,所以总共k次。如果第k层没有坏,那么第一个球在第k层的基础上再加k-1层(注意不是k层,原因见后面),所以第二次从2k-1层投下,在k,k+1,k+2,……,2k-2,2k-1中则有k-2层,所以用k-2次才能找出,再加上原来的那两次,还是共用了k次(为了保持总共还是k次,所以上面只能加k-1层)依次类推.....在第2k-1层基础上再加k-2层,在第3k-3层基础上再加k-3层,……,依次类推,一定能加到在第某层的基础上再加2层,最后再原来的基础上面还能再加1层,到目前为止,设为第n-1层,如果第n-1层坏了,那么就是第n-1层,如果没有坏,根据已知题说某一层能摔碎球,那么在第n-1层上面有且仅还有一层就是刚摔坏的层(此时不需要实际投,而是直接推理得出),这时用的次数还是k次(最不理想的结果),所以k次能测最多n层,由上面的解说,可知n-1=k+(k+1)+(k+2)+(k+3)+……+2+1=k(k+1)/2,得n=k(k+1)/2+1,由上面可知n=100(层),k次最多能推测k(k+1)/2+1(层),所以k(k+1)/2+1≥100,得k(k+1)≥198,且k的最小整数为14,所以最多14次就能找出题目中的那层。   补充:由上得知,第一次在14层投,第二次在第27层投,则依次为14 27 39 50 60 69 77 84 90 95 99。还能得出14次最多能测得到106楼,只不过题目中给了100楼,如果是107楼,那么就需要15次了。

100层楼丢玻璃球问题相关推荐

  1. [腾讯面试题]100层楼丢玻璃球问题

    有一栋100层高的大楼,给你两个完全相同的玻璃球.假设从某一层开始,丢下玻璃球会摔碎.那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层?? 解题思路: 假如只有一个球,那很显然,只有一 ...

  2. 100层楼丢玻璃球问题-----有俩个玻璃球怎么才能用最少次数求出来玻璃球破碎的临界值?

    首先,看到这个题目我想许多小伙伴可能跟我第一次看到这个题目一样都是去想到了二分法去解决这个问题,不过那个想法肯定是错误的.** 思路: 我们从n层楼扔下,如果小球刚好破了那么我们就要从1层开始扔,假设 ...

  3. C语言丢鸡蛋100层,关于100层楼,扔两个鸡蛋,求摔碎鸡蛋的临界层的问题

    题目描述: 两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事.有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置.可以摔碎两个鸡蛋. 网上有人 ...

  4. 100层楼扔鸡蛋或者玻璃珠问题

    ---------------------------以下网上别人的解答---------------------------------------------- 有一栋楼共100层,一个鸡蛋从第N ...

  5. 100层楼,2个鸡蛋问题

    题目描述: 一道非常经典的面试题目,给你两个鸡蛋,在一幢100层的大楼里面,至少扔几次可以测出让鸡蛋破碎的临界高度? 两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事 ...

  6. 关于100层楼,扔两个鸡蛋,求摔碎鸡蛋的临界层的问题

    题目描述: 两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事.有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置.可以摔碎两个鸡蛋. 网上有人 ...

  7. 你还在用二分法求2个鸡蛋100层楼的问题吗?

    题目 2个鸡蛋,100层楼,如何用最少的试验次数得到在鸡蛋落下不碎的最高层数?这一据说曾被谷歌纳入校园招聘题库的经典面试题,想必许多人都曾遇到过,又有多少人与我一样,不加思索就直接回答用二分法查找的? ...

  8. 100层楼2个鸡蛋,测试其最低破碎楼层问题

    原文章链接 http://www.cnblogs.com/yangai/p/5391533.html http://www.tuicool.com/articles/NzUNJr http://blo ...

  9. 2个鸡蛋100层楼/2个玻璃珠39层楼

    题目描述: 你拿着两个鸡蛋站在100层的大楼上.鸡蛋或许结实到从楼定掉下也不会摔碎,或许很易碎.最少试验多少次可以找出鸡蛋被摔碎的最低楼层? 腾讯2017笔试题也有类似的题目,描述是针对2个玻璃珠和3 ...

最新文章

  1. 一个可视化的retrospective网站
  2. 从分布式一致性算法到区块链共识机制
  3. BZOJ1485: [HNOI2009]有趣的数列
  4. 前端学习(1578):React简介
  5. Spire.Pdf 的各种操作总结
  6. 非对称加密算法 --- RSA签名算法
  7. 移动发布手机病毒警示信息 发现六种新型病毒
  8. ios 上传图片失败 小程序_微信小程序ios端 使用ajaxSubmit上传图片失败,android没问题...
  9. 数的分解、分解质因数
  10. opipe--一款基于java的自定义“命令”管道
  11. 精雕道路怎么遍弧形_沥青冷补料多少钱一吨?怎么施工?效果怎么样?
  12. gitlab查看word文档_gitlab迁移
  13. Vue源码系列(一):Vue源码解读的正确姿势
  14. 跟着安全牛大表哥学渗透
  15. 新秀学习51供应链管理的----模拟笔记本PC和51串行通讯1
  16. 听框架师——李云谈如何成为一个技术“牛人”
  17. 知道创宇研发技能列表v3.0
  18. MyCat实现MySQL读写分离(单主单从多库)
  19. 「学习总结-Haskell-1」Haskell 基础知识
  20. Solidworks出错导致solidworks意外退出 故障模 vcruntime140

热门文章

  1. centos8本地yum源的搭建
  2. python:实现二进制转十进制算法(附完整源码)
  3. Dynatrace系列之-排除干扰请求
  4. [RK3288] [Android 7.1] u-blox GPS调试
  5. 国仁网络资讯:短视频运营中各种常见的拍摄手法,一一揭秘。
  6. 如何回答面试官项目亮点?
  7. 因为我是姑娘,所以不想像你一样安逸生活
  8. OneDrive无法在线访问的间接解决办法
  9. android studio turn off hyperv,Android Studio 3.1.2 - 关闭VCS(Android Studio 3.1.2 - Turn VCS OFF)
  10. linux菜鸟必学的60个命令,Last- Linux必学的60个命令