leetcode.887 鸡蛋掉落(Hard)
动态规划方法一:
考虑每一层扔鸡蛋,扔下去的结果两种,碎、不碎
如果碎了,说明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)相关推荐
- 装鸡蛋的鞋子java代码_Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)...
887. 鸡蛋掉落 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑. 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去. 你知道存在楼层 F ,满足 0 < ...
- LeetCode 887. 鸡蛋掉落(DP,难、不懂)
1. 题目 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑. 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去. 你知道存在楼层 F ,满足 0 <= F ...
- 算法---LeetCode 887. 鸡蛋掉落
1. 题目 原题链接 给你 k 枚相同的鸡蛋,并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑. 已知存在楼层 f ,满足 0 <= f <= n ,任何从 高于 f 的楼层落下 ...
- 【leetcode】鸡蛋掉落问题
在leetcode刷动态规划问题过程中,鸡蛋掉落问题是比较经典的,特别是笔试面试喜欢出的问题.腾讯,Vivo等大厂都出现过,在这里通过自己学习,以及借鉴大佬的思路,对这道题进行整理. 其它算法问题刷题 ...
- leetcode:887. 鸡蛋掉落【经典dp定义】
目录 题目截图 题目分析 ac code 总结 题目截图 题目分析 变量:鸡蛋的数量,楼层n,尝试的次数m 有一个单调性容易发现:尝试的次数越多,能解决楼层越高的确切值 另一个单调性:鸡蛋的数量越多, ...
- 887. 鸡蛋掉落(困难)-动态规划
一.题目描述 给你 k 枚相同的鸡蛋,并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑. 已知存在楼层 f ,满足 0 <= f <= n ,任何从 高于 f 的楼层落下的鸡蛋都 ...
- 【数据结构与算法】动态规划-leetcode.1884 鸡蛋掉落两枚鸡蛋
[题目]: 给你 2 枚相同 的鸡蛋,和一栋从第 1 层到第 n 层共有 n 层楼的建筑. 已知存在楼层 f ,满足 0 <= f <= n ,任何从 高于 f 的楼层落下的鸡蛋都 会碎 ...
- [Leedcode][JAVA][第887题][鸡蛋掉落][谷歌面试][动态规划]
[问题描述] [887. 鸡蛋掉落] 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑.每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去.你知道存在楼层 F ,满足 ...
- LeetCode887. 鸡蛋掉落
887. 鸡蛋掉落 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑. 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去. 你知道存在楼层 F ,满足 0 < ...
最新文章
- 尹伊:Datawhale做的一件事
- 环形缓冲区: ringbuf.c
- BZOJ 1014 火星人prefix
- 设置了hover伪类中有cursor:hand但是没有效果
- 【Python】random库的使用
- List集合的remove一个对象的方法
- uva 11012——Cosmic Cabbages
- 知识点:图说 Mysql 权限管理
- CICD详解(六)——SVN+Jenkins项目控制实战
- 吴恩达深度学习第一周课程学习笔记
- Postman调接口时获取Chrome浏览器Cookie数据携带发送
- linux 摄像头yuv,camera YUV格式
- studio和solo哪个好_beats studio3 和solo3的区别再哪里?
- 《社会企业开展应聘文职人员培训规范》团体标准在新华书店上架
- eclipse vail_屏幕快照:Windows Home Server Beta“ Vail”安装过程
- java解压加密的7z格式文件
- c#通过键盘输入若干个整数,长度不得多于20个,最后将其中最大的数输出,采用控制台的形式实现。
- 【Linux编程】进程间通信(IPC)C语言实现
- 【经验】代码统计工具cloc
- 7-6 进步排行榜 (10 分)
热门文章
- 关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并)
- android带边框的RelativeLayout
- 概率论期末复习第四章
- Django request.META.get()获取header头
- 外盘期货开户_10月30日外盘期货晚间原油策略建议
- jquery ---to be continued
- 怎么样下载浓情中秋月饼宣传产品介绍PPT模板
- 联想ghost重装系统_通用PE工具箱装系统(V6.3)-安装Ghost版XP、WIN7系统
- 【SDN vs. NFV】纠缠不清的SDN和NFV
- 【CodeCombat-Python】地牢-kithgard 斗殴