这是一道动态规划的题目。
参考两个链接,可以理解解法。
1. http://blog.csdn.net/lzshlzsh/article/details/5951447
2. http://www.cnblogs.com/Donnnnnn/p/5720729.html

在(1)中,把100层摔鸡蛋问题,化成动态规划理解
f(a,b)表示现在有a个鸡蛋,可以允许测试b次,那么可以被测出来的层数是多少。
譬如,f(a,b)=100。我不知道哪一层是临界层,也不知道怎么分段去测,但是我肯定如果有100层,我通过a个鸡蛋,进行b次测试就一定能够测出来。
这里分两种情况
1.如果第一次测试,我在x层扔下来,鸡蛋摔破了。损失一个鸡蛋a-1;损失一次测试b-1。所以是f(a-1,b-1)
2.如果第一次测试,我在x层扔下来,鸡蛋没有摔破,鸡蛋无损失a;损失一次测试b-1。所以是f(a,b-1)
综合两种情况:

f(a,b)=f(a-1,b-1)+f(a,b-1)+1;

其实这里优点难理解。我的理解是,1是本次测试所要扣除的1。之所以前面两个f要相加,是因为我现实中可能性就是有破和不破这两种,我都是可以自己控制解决这两种情况的。一层楼,可能发生两种情况,但是上面的层和下面的层我都掌握着,都涵盖到了。所以用加法,说明我总共能够测这么多层楼。

除了表达式外,还有两个公式
f(a,1)=1;我有a个鸡蛋,但是只能测一次,那肯定是只能测出一层楼了。
f(1,b)=b;我有1个鸡蛋,总共可以测试b次,我肯定是只能从1-n层的顺序测试,只能测b层楼。

好了,现在列个表格,求出来就可以了。

f(a,b)=f(a-1,b-1)+f(a,b-1)+1

行数是鸡蛋数目。列数是测试次数。我们知道2个鸡蛋测试14次就可以测试105层楼。

可是,我们想要知道究竟实际是如何分段测试的?看(2)

(2)在 2 链接中,有说明100层楼,我们如果平均分段
10—20—30—40—50—…这样子平均分段
其实这样子分段,段是平均的,但是我的测试的次数是不平均的。
试想在10层鸡蛋不破,我们就要测试20。20层一定是从10层过来的,这就意味着,这里多了一个测试次数。所以,最佳的分段方案上,上层楼层段内层数比下层楼层段类层数少一层。这样就保证了无论临界楼层在哪个区间段,我们总能通过同样的试探次数将能将其找出来。

可以根据14和上下层相差1的关系来分层。
2–15
16–28

验证每次测试都是14次:
15分段值1次
2–14 一共13次
所以14次。

100层摔两个鸡蛋的问题相关推荐

  1. N个鸡蛋从M楼层摔(2个鸡蛋从100层摔)

    转载自: http://blog.csdn.net/wolinxuebin/article/details/47057707 http://www.cnblogs.com/yangai/p/53915 ...

  2. Google面试题之100层仍两个棋子

    一道Google面试题,题目如下:"有一个100层高的大厦,你手中有两个相同的玻璃围棋子.从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层 ...

  3. 两个软硬程度一样的鸡蛋,它们在某一层摔下会碎,有个100层的建筑,要求最多用两个鸡蛋确 定鸡蛋安全下落的临界位置,给出临界位置?如果是n层楼,m个鸡蛋,请给出确定临界位置的算法

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

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

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

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

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

  6. 两个鸡蛋,100层楼,找出摔碎鸡蛋的最低楼层,所用的摔鸡蛋次数最少

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

  7. 有一栋楼共100层,一个鸡蛋从第N层及以上的楼层落下来会摔破, 在第N层以下的楼层落下不会摔破。给你2个鸡蛋,设计方案找出N,并且保证在最坏情况下, 最小化鸡蛋下落的次数。

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

  8. 【经典算法题】用两个鸡蛋和100层的楼来测鸡蛋硬度

    前几天看到一个挺有意思的面试问题,据朋友说今年字节和Shopee都问过. 题目如下: 有2个鸡蛋,在总共有100层的楼上往下扔,以此来测试鸡蛋的硬度.比如鸡蛋在第9层没有摔碎,在第10层摔碎了,那么鸡 ...

  9. 【动态规划】2只鸡蛋与100层塔问题(有详细说明和思路代码)

    参考博客链接:https://blog.csdn.net/Autumn03/article/details/80886814 题目:2个鸡蛋,从100层楼上往下扔,以此来测试鸡蛋的硬度,比如鸡蛋在第9 ...

最新文章

  1. 04、数据绑定控件 ListBox 的一个 Bug
  2. 快看漫画大数据平台的模型思维与用户增长实践
  3. Java中字符串以小数点分割时无效,String s = “12.34“; String[] ss = split(“.“);分割结果为空
  4. confirm修改按钮文字_踏入MG动画设计的门,才知道文字动画这么重要……
  5. 八位图 16位图_了解位图
  6. E1倒换保护设备知识详解
  7. 金融资讯数据服务平台建设实践
  8. 在SAE搭建微信公众账号服务
  9. JS复制文本到剪切板
  10. [URAL]1014 The Product of Digits
  11. 灵格斯Lingoes词典及浏览器插件实现屏幕取词等功能的配置使用方法
  12. Linux武侠文字游戏,怀旧的文字游戏,文字武侠手游哪个好玩?
  13. java求两个数的最小公倍数的方法_Java程序查找两个数字的最小公倍数
  14. 在线作图|2分钟做Lefse分析
  15. 我看肖老师的《明日世界-云端计算下的程序设计需求》视频时,做的简单笔记
  16. Linux7下Mysql5.7搭建MHA(0.58版本)
  17. 网络主流平台可以买到 龙芯3A5000 处理器的电脑了。
  18. C#控件篇 - 图表控件chart - 添加辅助边界线条
  19. python提取微信聊天语音_利用Python进行微信,QQ的语音识别!内部技术的延伸版!...
  20. 【TensorFlow】im2txt — 将图像转为叙述文本

热门文章

  1. 如何在微信中(微信公众号页面)给Vue单页应用设置标题
  2. Netty游戏服务器实战开发(11):Spring+mybatis 手写分库分表策略(续)
  3. android 开游艇游戏,游艇狂飙游戏-游艇狂飙安卓版预约_第一手游网
  4. 机器学习核心总结-概念、线性回归、损失函数、泛化及数据集划分、特征工程、逻辑回归和分类
  5. 【AnimeJs】——仿Animejs徒手实现SVG动画
  6. c语言画简谐振动图像,[求助] 实心小球沿正弦曲线运动
  7. vue.js--v-show隐藏图片
  8. android多点触控,图片的拖拽与放大缩小
  9. 域名被微信拦截怎么办?
  10. 关闭PyCharm的Run with Python Console模式