动态规划方法一:
考虑每一层扔鸡蛋,扔下去的结果两种,碎、不碎
如果碎了,说明F在 1~ i-1 之间,还需要在1~ i-1即i-1层楼中搜索
如果没有碎,说明F在 i~ n之间,还需要再i+1~n层即n-i层楼中搜索
记dp[i][k]表示有k个鸡蛋,i层楼中确定F的具体值的最小搜索次数
那么,假设某次搜索在第j楼,根据上面的思路,在第j楼扔下,存在两种结果:碎、不碎
然后根据结果分别在j楼上面或者下面的搜索区间继续搜索F的值
因此可以得到递推公式
dp[i][k] =min{ max(dp[j-1][k-1], dp[i-j][k]) + 1 | 1<=j<=i }
显然,k>=1,而i为0时,表示没有任何楼层,那么dp[0][k]=0
当k=1,只有一个鸡蛋,只能线性搜索,dp[i][1]=i

动态规划方法二(题解方法):
1、无论你在哪层楼扔鸡蛋,鸡蛋只可能摔碎或者没摔碎,碎了的话就测楼下,没碎的话就测楼上。
2、无论你上楼还是下楼,总的楼层数 = 楼上的楼层数 + 楼下的楼层数 + 1(当前这层楼)。
根据这个特点,可以写出下面的状态转移方程:
dp[k][m] = dp[k][m - 1] + dp[k - 1][m - 1] + 1
dp[k][m - 1] 就是楼上的楼层数,因为鸡蛋个数 k 不变,也就是鸡蛋没碎,扔鸡蛋次数 m 减一;
dp[k - 1][m - 1] 就是楼下的楼层数,因为鸡蛋个数 k 减一,也就是鸡蛋碎了,同时扔鸡蛋次数 m 减一。
上述递推公式可以这样理解,一次扔鸡蛋至少能推测1层楼,剩余m-1次扔鸡蛋则分别可以推测dp[k-1][m-1]和dp[k][m-1]层楼
dp[k-1][m-1]表示如果这次扔鸡蛋破了,那么只剩下k-1个鸡蛋和m-1次扔鸡蛋的机会可以探测到的最高楼层数
dp[k][m-1]表示这次扔鸡蛋没有婆,还剩下k个鸡蛋和m-1次扔鸡蛋机会可以探测到的最高楼层数
同时还有本身扔鸡蛋的这一层楼
一共能够推测的楼层就是上述三者之和

leetcode.887 鸡蛋掉落(Hard)相关推荐

  1. 装鸡蛋的鞋子java代码_Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)...

    887. 鸡蛋掉落 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑. 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去. 你知道存在楼层 F ,满足 0 < ...

  2. LeetCode 887. 鸡蛋掉落(DP,难、不懂)

    1. 题目 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑. 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去. 你知道存在楼层 F ,满足 0 <= F ...

  3. 算法---LeetCode 887. 鸡蛋掉落

    1. 题目 原题链接 给你 k 枚相同的鸡蛋,并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑. 已知存在楼层 f ,满足 0 <= f <= n ,任何从 高于 f 的楼层落下 ...

  4. 【leetcode】鸡蛋掉落问题

    在leetcode刷动态规划问题过程中,鸡蛋掉落问题是比较经典的,特别是笔试面试喜欢出的问题.腾讯,Vivo等大厂都出现过,在这里通过自己学习,以及借鉴大佬的思路,对这道题进行整理. 其它算法问题刷题 ...

  5. leetcode:887. 鸡蛋掉落【经典dp定义】

    目录 题目截图 题目分析 ac code 总结 题目截图 题目分析 变量:鸡蛋的数量,楼层n,尝试的次数m 有一个单调性容易发现:尝试的次数越多,能解决楼层越高的确切值 另一个单调性:鸡蛋的数量越多, ...

  6. 887. 鸡蛋掉落(困难)-动态规划

    一.题目描述 给你 k 枚相同的鸡蛋,并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑. 已知存在楼层 f ,满足 0 <= f <= n ,任何从 高于 f 的楼层落下的鸡蛋都 ...

  7. 【数据结构与算法】动态规划-leetcode.1884 鸡蛋掉落两枚鸡蛋

    [题目]: 给你 2 枚相同 的鸡蛋,和一栋从第 1 层到第 n 层共有 n 层楼的建筑. 已知存在楼层 f ,满足 0 <= f <= n ,任何从 高于 f 的楼层落下的鸡蛋都 会碎 ...

  8. [Leedcode][JAVA][第887题][鸡蛋掉落][谷歌面试][动态规划]

    [问题描述] [887. 鸡蛋掉落] 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑.每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去.你知道存在楼层 F ,满足 ...

  9. LeetCode887. 鸡蛋掉落

    887. 鸡蛋掉落 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N  共有 N 层楼的建筑. 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去. 你知道存在楼层 F ,满足 0 < ...

最新文章

  1. 尹伊:Datawhale做的一件事
  2. 环形缓冲区: ringbuf.c
  3. BZOJ 1014 火星人prefix
  4. 设置了hover伪类中有cursor:hand但是没有效果
  5. 【Python】random库的使用
  6. List集合的remove一个对象的方法
  7. uva 11012——Cosmic Cabbages
  8. 知识点:图说 Mysql 权限管理
  9. CICD详解(六)——SVN+Jenkins项目控制实战
  10. 吴恩达深度学习第一周课程学习笔记
  11. Postman调接口时获取Chrome浏览器Cookie数据携带发送
  12. linux 摄像头yuv,camera YUV格式
  13. studio和solo哪个好_beats studio3 和solo3的区别再哪里?
  14. 《社会企业开展应聘文职人员培训规范》团体标准在新华书店上架
  15. eclipse vail_屏幕快照:Windows Home Server Beta“ Vail”安装过程
  16. java解压加密的7z格式文件
  17. c#通过键盘输入若干个整数,长度不得多于20个,最后将其中最大的数输出,采用控制台的形式实现。
  18. 【Linux编程】进程间通信(IPC)C语言实现
  19. 【经验】代码统计工具cloc
  20. 7-6 进步排行榜 (10 分)

热门文章

  1. 关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并)
  2. android带边框的RelativeLayout
  3. 概率论期末复习第四章
  4. Django request.META.get()获取header头
  5. 外盘期货开户_10月30日外盘期货晚间原油策略建议
  6. jquery ---to be continued
  7. 怎么样下载浓情中秋月饼宣传产品介绍PPT模板
  8. 联想ghost重装系统_通用PE工具箱装系统(V6.3)-安装Ghost版XP、WIN7系统
  9. 【SDN vs. NFV】纠缠不清的SDN和NFV
  10. 【CodeCombat-Python】地牢-kithgard 斗殴