LeetCode887 鸡蛋掉落

LeetCode887 鸡蛋掉落

考虑使用 \(k\) 个鸡蛋,计算进行 \(t\) 次操作可以测试的最高楼层数,记作 \(dp[t][k]\)

最小的 \(t\) 使得 \(dp[t][k] \ge n\) 即为最终答案

转移状态分鸡蛋碎了和没有碎

\(dp[t][k] = 1 + dp[t-1][k] + dp[t-1][k-1]\)

class Solution:
    def superEggDrop(self, k: int, n: int) -> int:

        if n == 1: return 1

        dp = [0] * (k + 1)
        for i in range(1, n + 1):
            for j in range(k, 0, -1):

                dp[j] = dp[j] + dp[j - 1] + 1
                if dp[j] >= n: return i
        
        return n

posted on 2022-06-30 16:54  solvit  阅读(18)  评论(0编辑  收藏  举报

导航