问题:有一座100层高的大楼和两个玻璃球(小球A和小球B),现在我们要通过在楼上扔玻璃球的方式来测试玻璃球的坚硬程度,已知从这座楼的某一层开始,往下扔玻璃球,玻璃球会碎,问最少需要多少次尝试,才能找到最低在哪层会摔碎?

分析题干:问的是 最少需要多少次尝试。设需要x次,最低层为m层,即给我 x 次扔玻璃球的机会,我就能找到 m的值。 在下述的方案中,我们只考虑最坏情况,只要我们在最坏的情况下,使用 x 次的机会,找到了m的值,那么在其他的情况下找到m值所需要的次数肯定小于等于 x 。

方案1:从低到高一层一层试,最坏情况(第100层碎了):试100次。 答案是 100次。

方案2:二分法,最坏的情况(50层碎了1个,然后从低到高的测试,49没碎,):试50次,答案是50次。

方案3:等距间隔法,设最低层为m层,设等距间隔为k 层,设第一个球在第n层测试时碎了,设测试了 y 次才得到了m的值。从低到高每隔k层,扔一下第一个小球,直到碎了为止,该层为第 n 层,由于在在n-k层时没碎,那么我们可以推测出① n-k+1<=m<=n ;②之前测试了n/k次。然后我们拿第二个小球从n-k+1层开始试,最坏的情况是再尝试 k-1 次(n-(n-k)-1)(即第二个小球测试了k-1次也没有碎,这意味着 n=m),加上之前测试的n/k次,总共是n/k+k-1次。由此,我们可以得到一个函数 y=n/k+k-1, 在一座100层的大楼里, 1<=n<=100,2<=k<=49。此时,测试次数取决于n和k,显然 n 与 y是成正比的,所以最坏的情况是当n=100时,所以 y=100/k +k-1,其函数图如下,所以当k=10时,y最小,只需要19次,就能找到m的值。

方案4:最优间隔法,思路:我们用小球A来初步确定最低楼层的取值范围,然后用小球B来确定最低楼层的具体值。

设最低楼层为m层,设A球第一次在k层尝试。

小球A的第一次在k层尝试,如果碎了那么小球B最多尝试k-1次,就能知道m的值(最多尝试了k次);小球A:1次,小球B:最多k-1次。我们总共测试了 k 层;

如果第一次没碎,小球A第二次在k+k-1(2k-1)层测试,如果碎了,那么小球B最多尝试k-2次(依次在k+1,k+2,k+3,...,2k-2层测试),就能知道m的值(最多尝试了k次)。小球A:2次,小球B:最多k-2次,我们总共测试了2k-1层(k+k-1);

如果第二次没碎,小球A第三次在k+k-1+k-2(3k-3)层测试,如果碎了,那么小球B最多尝试k-3次(依次在2k,2k+1,2k+2,...,3k-4层测试),就能知道m的值(最多尝试了k次)。小球A:3次,小球B:最多k-3次,我们总共测试了3k-3层(k+k-1+k-2);

依次类推 x<=k,小球A:x次,小球B:最多k-x次,我们总共测试了(k+k-1+k-2+...+k-x+1)层;

最后一次,小球A:k次,小球B:0次;我们总共测试了(k+k-1+k-2+k-3+...+1)=k*(k+1)/2层楼。

综上所述,在方案4里,我只需要k次机会和两个小球就能知道k*(k+1)/2层高的大楼里从每层楼里扔 小球的测试结果。

现在是已知100 层的高楼里,从某一层开始扔小球,一定会碎,所以我们只需要1-99层的测试结果即可,所以最终的 方程式是:99<=k*(k+1)/2, 求出  14<=k。

答:至少需要14次尝试,才能找到最低在哪层会摔碎。

对100层楼两个玻璃球测试问题的理解相关推荐

  1. 两个玻璃球 测试极限高度

    一道有趣的智力题目: 已知,玻璃球从某高楼落到地面会摔碎,楼的最大高度为100层,给你两个玻璃球,请你最快的测出,能使玻璃球摔碎的最低楼层... 两个玻璃球 思路1:蛮力法 如果用蛮力法, 从1楼,2 ...

  2. 两个玻璃球和100层楼的问题

    (http://hi.baidu.com/ajdo/blog/item/f0c292ed8cf6b05d78f055ba.html) 给你两个玻璃球,有一座100层的大厦,用最少的实验次数找出临界层, ...

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

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

  4. 100层楼,最少需要几次测试,才能得到摔碎鸡蛋的楼层

    我在腾讯二面碰到了这个问题. 转自:https://blog.csdn.net/Madoka_Homura/article/details/78331152 对于这个问题,如果从编程角度而言,最简单的 ...

  5. 动态规划--100层楼2只鸡蛋最少次可以测试最高楼层不摔破

    100层楼2个鸡蛋 原题目:100层楼2个鸡蛋最少需要几次测试,才能得到摔破鸡蛋的楼层: 转换题目:两个鸡蛋,进行k次测试,最多可以测试多少层? 分析:第1个鸡蛋测试所在的楼层高度为k层. ①如果第1 ...

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

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

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

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

  8. 数形结合彻底解决2个球100层楼摔坏的问题 .

    题目:有一栋100层高楼,从某一层开始扔下的玻璃球刚好摔坏,现有两个玻璃球,试用最简便的方法确定这个恰好摔坏玻璃球的那层. 这是一道著名的面试题目,仅写出我的思路和解法. 首先从题目得出基本思路 1. ...

  9. 数形结合彻底解决2个球100层楼摔坏的问题

    题目:有一栋100层高楼,从某一层开始扔下的玻璃球刚好摔坏,现有两个玻璃球,试用最简便的方法确定这个恰好摔坏玻璃球的那层. 这是一道著名的面试题目,仅写出我的思路和解法. 首先从题目得出基本思路 1. ...

最新文章

  1. linux监控(陆续补充)
  2. python好用-Pyzo -- 好用的 Python 轻量级 IDE
  3. 成功解决Instructions for updating:  Use `tf.global_variables_initializer` instead.
  4. 如何在窗体之间通讯的几种方法 ? VB.NET方案
  5. 字符串的获取相关方法
  6. 牛客练习赛26B 烟花 (概率DP)
  7. 机器学习之特征工程-特征选择
  8. 37℃已成历史:人类体温越来越低意味着什么?
  9. 【转】Android 避免APP启动闪黑屏(Theme和Style)
  10. PPC莫名死机,上周末为此hard reset了两次重装,这几天又历史重演,今天再次硬复位。想我那个Palm TT...
  11. mysql数据库学习——2,数据库的选定,创建,删除和变更
  12. 修炼Python基础篇-字典(Dictionary)学习
  13. Alpha通道的概念与功能
  14. mysql 授权_MySQL的授权
  15. matlab fprintf和disp,matlab中 fprintf 和disp的用法
  16. 计算机三级路由器配置例题,计算机三级网络技术(7):路由器配置及使用(上)...
  17. 【机器学习】LayerNorm BatchNorm的作用以及区别
  18. 如何高效的进行空值的填充
  19. 腐烂国度2巨霸版计算机学知识,腐烂国度2巨霸版玩法技巧汇总
  20. python断网还能用吗_python 断网

热门文章

  1. 第1章 当我们谈论算法的时候,我们在谈论什么?
  2. SCons教程(3) 编译程序
  3. Scons入门指南 使用教程 笔记
  4. KSQL:Apache Kafka的流式SQL
  5. 【安全开发】IOS安全编码规范
  6. 智能硬件产品盈利模式
  7. .net famework 版本过低,请升级至4.6.2或更新版本
  8. 苹果11蓝牙配对不成功怎么办_苹果手机蓝牙怎么连不上的解决步骤
  9. NDK学习笔记:FFmpeg解压MP34提取音频PCM(swrContext、swr_alloc_set_opts)
  10. 如何截取电影画面转换成gif动图做微信表情包