[887][困难][动态规划] 鸡蛋掉落
题目描述
输入:k = 1, n = 2
输出:2
解释:
鸡蛋从 1 楼掉落。如果它碎了,肯定能得出 f = 0 。
否则,鸡蛋从 2 楼掉落。如果它碎了,肯定能得出 f = 1 。
如果它没碎,那么肯定能得出 f = 2 。
因此,在最坏的情况下我们需要移动 2 次以确定 f 是多少。输入:k = 2, n = 6
输出:3解题思路
参考资料
最后更新于
输入:k = 1, n = 2
输出:2
解释:
鸡蛋从 1 楼掉落。如果它碎了,肯定能得出 f = 0 。
否则,鸡蛋从 2 楼掉落。如果它碎了,肯定能得出 f = 1 。
如果它没碎,那么肯定能得出 f = 2 。
因此,在最坏的情况下我们需要移动 2 次以确定 f 是多少。输入:k = 2, n = 6
输出:3最后更新于
输入:k = 3, n = 14
输出:4class Solution:
def superEggDrop(self, k: int, n: int) -> int:
cache = [[t + 1 for t in range(n)] for _ in range(k)]
for i in range(1, k):
for j in range(1, n):
for l in range(j + 1):
if l == 0:
cache[i][j] = min(cache[i][j], cache[i][j - l - 1] + 1)
else:
cache[i][j] = min(cache[i][j], 1 + max(cache[i - 1][l - 1], cache[i][j - l - 1]))
print(cache)
return cache[-1][-1]