#分析,假设x是最优解的最多次数。则第一个鸡蛋第一次从第x层扔(不管碎没碎,还有x-1次尝试机会)。

# 如果碎了,则第二个鸡蛋在1~x-1层中线性搜索,最多x-1次;

# 如果没碎,则第一个鸡蛋第二次从x+(x-1)层扔(现在还剩x-2次尝试机会)。

# 如果这次碎了,则第二个鸡蛋在x+1~x+(x-1)-1层中线性搜索,最多x-2次;

# 如果还没碎第一个鸡蛋再从x+(x-1)+(x-2)层扔,依此类推。

# x次尝试所能确定的最高楼层数为x+(x-1)+(x-2)+...+1=x(x+1)/2。

#1.两个鸡蛋问题f[n] = min{ 1+max(i-1,f[n-i]) | i=1..n } 初始条件: f[0]=0(或f[1]=1)

#2.m个鸡蛋问题f[n,m] = min{ 1+max(f[i-1,m-1], f[n-i,m]) | i=1..n } 初始条件:f[i,0]=0(或f[i,1]=i)

import numpy as np

def computeMinDropsInWorstCase(eggs,floors):

table=np.zeros((eggs+1,floors+1))

#如果只有0楼或者一楼时

for i in range(eggs+1):

table[i][0]=0

table[i][1]=1

#如果只有一个鸡蛋

for j in range(floors+1):

table[1][j]=j

#其他情况,table( eggs, floors) = 1+ Max(table( eggs-1 , floors-1), table( eggs, floors-x))

for i in range(2,eggs+1):

for j in range(2,floors+1):

table[i][j]=2**63-1

for x in range(1,j):

#table[i-1][x-1]表示鸡蛋在X楼碎了减小一个。table[eggs][j-x]表示鸡蛋还是最开始的

# 楼层变为j-x

maxtable=1+max(table[i-1][x-1],table[i][j-x])

if maxtable

table[i][j]=maxtable

print(table[eggs][floors])

if __name__ == '__main__':

computeMinDropsInWorstCase(4,100)

computeMinDropsInWorstCase(5, 100)

computeMinDropsInWorstCase(6, 100)

computeMinDropsInWorstCase(7, 100)

print("由此可知,当楼层固定时,鸡蛋足够时,次数也只会固定在一个值,不会继续减少\n"

"也就是说前期鸡蛋越多次数越少,后期次数不随鸡蛋的增多而变化,二分法结果就是极限")

拿鸡蛋python_扔鸡蛋问题python编写相关推荐

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

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

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

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

  3. 高楼扔鸡蛋问题 - 动态规划+反推演绎

    对于高楼扔鸡蛋问题,本文尝试反其道而行之:首先描述一个普适的高楼扔鸡蛋问题,然后利用动态规划法解决扔鸡蛋次数的问题,最后由获取次数的答案反推出扔鸡蛋的方法. 这种由次数答案反推出方法的演绎方式令人有点 ...

  4. 漫画:有趣的扔鸡蛋问题

    本文转载自程序员小灰 -----  第二天  ----- 题目:扔鸡蛋问题 有2个鸡蛋,从100层楼上往下扔,以此来测试鸡蛋的硬度.比如鸡蛋在第9层没有摔碎,在第10层摔碎了,那么鸡蛋不会摔碎的临界点 ...

  5. 经典算法面试题:高楼扔鸡蛋

    点击上方蓝字 关注我,涨知识 01 PART 扔鸡蛋实验 有一栋100层的楼,和2个坚硬的鸡蛋,从楼上扔下鸡蛋,鸡蛋会在大于某一层刚好开始碎,那最少几次能测出鸡蛋能承受的最大楼层呢? 如果从第50层扔 ...

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

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

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

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

  8. 高楼扔鸡蛋——动态规划问题

    今天算法课大伙做了一份课堂测验,是有关一维以及二维动态规划问题的,其中最后一天压轴的就是这道高楼扔鸡蛋问题. 在我得意洋洋以为能早早做完这份测验然后交卷的时候,我在这道题上摁是扣了半小时头皮,也没写出 ...

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

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

最新文章

  1. 富国银行是如何为公有云转型做准备的
  2. cudart64_101.dll not found
  3. php fastcgi_finish_request用法
  4. oracle添加文件,ORACLE---添加控制文件
  5. 【caffe-Windows】关于LSTM的使用-coco数据集
  6. Kinect开发笔记之六Kinect Studio的应用
  7. [Android系列—] 2. Android 项目目录结构与用户界面的创建
  8. 一点一点学习Ubuntu
  9. 学生选课系统代码-2view视图层代码【MVC--v】代码
  10. JAVA网络编程实战(笔记)
  11. java学习心得---循环结构
  12. linux 压缩除去某些文件夹,Linux tar压缩时 排除某个文件/文件夹
  13. matlab方波响应,对周期方波信号进行滤波matlab的实现
  14. 一.数组(10)274. H 指数(不怎么理解)
  15. 大法将致:将Windows Server 2016打造成个人办公系统,WIN2016打造成超级WIN10,WIN2016优化设置
  16. TRIZ系列-创新原理-14~15-曲面化原理和动态性原理
  17. java中使用length获取二维数组的长度
  18. 荒岛新生_荒岛Excel文件
  19. 家族查询系统c语言源程序,家谱管理系统(含源代码).docx
  20. AutoFIS阅读总结

热门文章

  1. 大话数据结构笔记(一)
  2. 【数据结构笔记】绪论
  3. 保姆级安装,在FusionCompute上搭建华为V6存储仿真器,并通过iscsi映射给Windows主机
  4. 超详细理解Gamma分布,Beta分布,多项式分布,Dirichlet狄利克雷分布
  5. 文件重命名后教你恢复为原来的名字
  6. sugarcrm连接mysql_php – 命令不同步;你现在无法使用mysql存储过程在SugarCRM中运行此命令...
  7. CSDN博客导出工具
  8. PC平台下ARPG游戏的操作感之键鼠主角控制
  9. 400分单招计算机,湖南单招最火爆的专科学校(适合400分以上,仅供参考)
  10. springboot 配置德鲁伊连接池