一栋楼有100层,在第N层或者更高扔鸡蛋会破,而第N层往下则不会。给2个鸡蛋,
求N,要求最差的情况下扔鸡蛋的次数最少。

我们先假设最坏情况下,鸡蛋下落次数为x,即我们为了找出N,一共用鸡蛋做了x次的实验。 那么,我们第一次应该在哪层楼往下扔鸡蛋呢?先让我们假设第一次是在第y层楼扔的鸡蛋, 如果第一个鸡蛋在第一次扔就碎了,我们就只剩下一个鸡蛋,要用它准确地找出N, 只能从第一层向上,一层一层的往上测试,直到它摔坏为止,答案就出来了。 由于第一个鸡蛋在第y层就摔破了, 所以最坏的情况是第二个鸡蛋要把第1到第y-1层的楼都测试一遍,最后得出结果, 噢,原来鸡蛋在第y-1层才能摔破(或是在第y-1层仍没摔破,答案就是第y层。) 这样一来测试次数是1+(y-1)=x,即第一次测试要在第x层。OK, 那如果第一次测试鸡蛋没摔破呢,那N肯定要比x大,要继续往上找,需要在哪一层扔呢? 我们可以模仿前面的操作,如果第一个鸡蛋在第二次测试中摔破了, 那么第二个鸡蛋的测试次数就只剩下x-2次了(第一个鸡蛋已经用了2次)。 这样一来,第二次扔鸡蛋的楼层和第一次扔鸡蛋的楼层之间就隔着x-2层。 我们再回过头来看一看,第一次扔鸡蛋的楼层在第x层,第1层到第x层间共x层; 第1次扔鸡蛋的楼层到第2次扔鸡蛋的楼层间共有x-1层(包含第2次扔鸡蛋的那一层), 同理继续往下,我们可以得出,第2次扔鸡蛋的楼层到第3次扔鸡蛋的楼层间共有x-2层, ……最后把这些互不包含的区间数加起来,应该大于等于总共的楼层数量100,即

  1. x + (x-1) + (x-2) + ... + 1 >= 100

  2. (x+1)*x/2 >= 100

得出答案是14。

即我先用第1个鸡蛋在以下序列表示的楼层数不断地向上测试,直到它摔破。 再用第2个鸡蛋从上一个没摔破的序列数的下一层开始,向上测试, 即可保证在最坏情况下也只需要测试14次,就能用2个鸡蛋找出从哪一层开始, 往下扔鸡蛋,鸡蛋就会摔破。

14, 27, 39, 50, 60, 69, 77, 84, 90, 95, 99, 100

比如,我第1个鸡蛋是在第77层摔破的,那么我第2个鸡蛋就从第70层开始,向上测试, 第二个鸡蛋最多只需要测试7次(70,71,72,73,74,75,76),加上第1个鸡蛋测试的 7次(14,27,39,50,60,69,77),最坏情况只需要测试14次即可得出答案。

【讲真不是很懂。。。】

no.6 _扔鸡蛋问题相关推荐

  1. dp 扔鸡蛋_使用动态编程(DP)的鸡蛋掉落问题

    dp 扔鸡蛋 Problem statement: You are given N floor and K eggs. You have to minimize the number of times ...

  2. java动态规划鸡蛋问题_教你彻底理解动态规划——扔鸡蛋问题 Drop Eggs2

    问题 有一个n层的建筑.如果一个鸡蛋从第k层及以上落下,它会碎掉.如果从低于这一层的任意层落下,都不会碎. 有m个鸡蛋,用最坏的情况下实验次数最少的方法去找到k, 返回最坏情况下所需的实验次数. 样例 ...

  3. 谷歌面试 扔鸡蛋_如何解决Google招聘人员关于从建筑物中扔鸡蛋的难题

    谷歌面试 扔鸡蛋 by Marcin Moskala 通过Marcin Moskala 如何解决Google招聘人员关于从建筑物中扔鸡蛋的难题 (How to solve the Google rec ...

  4. java动态规划鸡蛋问题_动态规划系列/高楼扔鸡蛋问题.md · lipengfei/fucking-algorithm - Gitee.com...

    # 经典动态规划问题:高楼扔鸡蛋 今天要聊一个很经典的算法问题,若干层楼,若干个鸡蛋,让你算出最少的尝试次数,找到鸡蛋恰好摔不碎的那层楼.国内大厂以及谷歌脸书面试都经常考察这道题,只不过他们觉得扔鸡蛋 ...

  5. Coursera Algorithms week1 算法分析 练习测验: Egg drop 扔鸡蛋问题

    题目原文: Suppose that you have an n-story building (with floors 1 through n) and plenty of eggs. An egg ...

  6. 抛鸡蛋html5游戏,数学智力题:扔鸡蛋计算不会碎的楼层

    智力题涵盖数学天地.侦探谜题.逻辑思维.猜谜大全.趣味益智.图形视觉等等.你知道有哪些经典智力题吗?下面小编为你整理经典数学智力题,希望能帮到你. 数学智力题:扔鸡蛋计算不会碎的楼层 扔鸡蛋计算不会碎 ...

  7. c++扔鸡蛋问题egg dropping puzzle(附完整源码)

    C++扔鸡蛋问题egg dropping puzzle 扔鸡蛋问题egg dropping puzzle算法的完整源码(定义,实现,main函数测试) 扔鸡蛋问题egg dropping puzzle ...

  8. 经典谷歌面试题-扔鸡蛋问题

    假如有100层楼,总共有2个鸡蛋.需要多少次才能试探出临界点,比如,在第三层扔下去,不碎:在第四层扔下去,碎了,那第三层和第四层就是临界点.  如果之前没准备过的话,大概第一个想到的就是二分法. 1. ...

  9. 扔鸡蛋问题具体解释(Egg Dropping Puzzle)

    经典的动态规划问题,题设是这种: 假设你有2颗鸡蛋,和一栋36层高的楼,如今你想知道在哪一层楼之下,鸡蛋不会被摔碎,应该怎样用最少的測试次数对于不论什么答案楼层都可以使问题得到解决. 假设你从某一层楼 ...

最新文章

  1. 细节之处方显linux真功夫
  2. Java Web之POI操作Excel2016模板
  3. 最简单的基于JavaEE和FFmpeg的视频网站
  4. Dividing 多重背包 倍增DP
  5. freemarker的空值和默认值
  6. 数据库设计笔记——MySQL基础知识(四)
  7. Maven在Eclipse中的实用小技巧
  8. ajax,training my javascript!手写AJAX,用POST方法传值
  9. x(x-1)表达式的意义
  10. IP实时传输协议RTP/RTCP详解
  11. 在Visual Studio中使用GitHub(使用篇)
  12. 如何编写单元测试用例
  13. 计算机十二种常用密码的破解方法
  14. C语言删除注册表某个键值,win7系统批量快速删除注册表中指定的某个键值的操作方法...
  15. RWD----响应式网页设计
  16. Linux ps命令简介
  17. 网页制作平台有哪些,一键套用模板,操作简单
  18. 用VB.NET(Visual Basic 2010)封装EXCEL VBA为DLL_COM组件(一)
  19. 世界上第一代电子计算机取名为,计算机应用基础知识计算机应用基础试题及答案...
  20. 解决MPx 无法在windows下运行

热门文章

  1. CodeForces - 137D Palindromes(dp+路径输出)
  2. CodeForces - 1409F Subsequences of Length Two(dp)
  3. HDU - 2438 Turn the corner(三分)
  4. 引用wx.getclipboarddata中的内容_教材、图书在引用时要注意哪些方面
  5. SGU247(排列组合与大数运算)
  6. 最短路径之Floyd算法
  7. Photo.scr病毒
  8. C++ 虚函数与纯虚函数
  9. 深入理解数据结构和算法
  10. 深入理解数据库核心技术