The puzzle of eggs and floors

俩崩溃的鸡蛋……

题目:

有一栋楼共100层,一个鸡蛋从第N层及以上的楼层落下来会摔破, 在第N层以下的楼层落下不会摔破。给你2个鸡蛋,设计方案找出N,并且保证在最坏情况下, 最小化鸡蛋下落的次数。(假设每次摔落时,如果没有摔碎,则不会给鸡蛋带来损耗)

关键目标就是最小化鸡蛋下落次数(也就是潜在的最大需要下落次数)

基本思路,如果鸡蛋在第n次摔碎了,那么就从第n-1层的地方一层一层往上摔

还好鸡蛋不是摔几次必碎。。。

1.二分法?

基本确实是要划分,但是如果在99层和第一层就摔坏,最小的鸡蛋下落次数差距略大,所以需要减少下落次数

2.多分几次

譬如10层一次摔,假如19层会摔坏,那么就是先在10层摔,没坏,在20层摔,坏了。。。。然后从11层开始一层一层摔,这种情况下最坏情况下需要摔18次(100/99层摔坏的时候)

如果要性能优化,当前情况显然不是人力可达的最优,应该是还可以优化

3.继续优化

这里我们发现,是否可以在次数上平均下,也就是,譬如第一次从10层扔,下次可以在19层扔,下下次是27层扔,这样会发现最差期望会低很多。

那么第一次是x层,第二次x-1层,可以有:

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

得x = 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次即可得出答案。

问题也许还可以拓展,但是不舍得虐鸡蛋了……

The puzzle of eggs and floors相关推荐

  1. Eggs Dropping puzzle(2 eggs, 100 floors)

    题目如下: You are given two eggs, and access to a 100-storey building. Both eggs are identical. The aim ...

  2. Egg Dropping Puzzle

    Question: There is a building of 100 floors  If an egg drops from the Nth floor or above it will bre ...

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

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

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

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

  5. 彻底搞懂-扔鸡蛋问题-方程-动态规划

    1.题目: 2个鸡蛋,从100层楼上往下扔,以此来测试鸡蛋的硬度,比如鸡蛋在第9层没有摔碎而在第10层摔碎了,那么鸡蛋不会摔碎的零界点就是9层,如何用最少的尝试次数,测试出鸡蛋不会摔碎的临界点? 2. ...

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

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

  7. 算法第四版扔鸡蛋问题

    本题来源于算法第四版1.4.25.1.4.26. 同时好像记得看过的腾讯面经里也问到过类似题目,因此觉得有必要仔细做一下. 题目如下: 一幢 100 层的大楼,给你两枚鸡蛋.假设,在第 n 层扔下鸡蛋 ...

  8. 扔鸡蛋问题-方程-动态规划

    参考:程序员小灰 https://blog.csdn.net/weixin_40564421/article/details/78988078 题目:2个鸡蛋,从100层楼上往下扔,以此来测试鸡蛋的硬 ...

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

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

最新文章

  1. (推荐)为什么要走嵌入式?
  2. django配置数据驱动,python安装失败问题
  3. julia语言 调用 java_以编程方式/动态导入Julia中的模块
  4. MVC 中使用uploadify上传图片遇到的蛋疼问题
  5. Swift - 设置应用程序图标的提醒个数(右上角小红圈)
  6. 惠普打印机服务器状态未知,惠普打印机状态显示需要注意
  7. 京东API接口:item_search - 按关键字搜索商品
  8. 计算机没有安装cad2006,win7系统不能正常安装cad2006的解决方法
  9. 智能化汽车3D ToF摄像头
  10. ps如何把自己的图与样机结合_Ps如何套用样机图?
  11. vue 项目中 npm run dev 运行98% after emitting CopyPlugin 卡死
  12. EVE-NG模拟器教程(三)——Lab平台初探
  13. 在Linux系统搭建DNS服务器
  14. 陈果《好的爱情》读书笔记(2)——成熟与自由
  15. 计算机SCI 源代码,计算机类SCI检索源刊.doc
  16. 关于PS设计里的八个便捷小技巧
  17. 雨润oa系统服务器 e-mobile,泛微OA系统e-mobile让办公更安全
  18. 易语言多线程大漠《剑侠情缘》实现一键批量开启游戏
  19. 使用Blender创造一个Low Polygon 插画
  20. matlab压缩机,基于MATLAB的滑片压缩机运动学数值分析

热门文章

  1. NTP时间同步指南 Linux(Ubuntu) / Windows
  2. 【UE4 Material 101学习笔记】 :Lec08/10/11/12 视差贴图的应用/布料着色/体积冰效果/树叶摇动
  3. 上海亚商投顾:沪指放量涨1.6%,券商板块表现亮眼
  4. 奶块w服务器维护,奶块在4月26日更新了什么 最新维护内容介绍
  5. 串联记忆法,你串上了吗?
  6. Widnows本地搭建WebDav服务,并内网穿透公网可访问
  7. SQLite极致性能提升方法[转载]
  8. python字符串中既有单引号又有双引号_python基础——字符串单引号双引号三引号...
  9. Git本地仓库提交代码到远程仓库出现报错:fatal: ‘origin‘ does not appear to be a git repository fatal: Could not read fr
  10. 他山之玉 可以攻石——碧玉太湖石挂件赏