799.香槟塔
线性dp
class Solution:
def champagneTower(self, k: int, m: int, n: int) -> float:
dp = [[0] * (m + 2) for _ in range(m + 2)] # 状态矩阵,只用到下三角
dp[0][0] = k
for i in range(m + 1):
for j in range(i + 1):
if dp[i][j] <= 1:
continue
dp[i + 1][j] += (dp[i][j] - 1) / 2
dp[i + 1][j + 1] += (dp[i][j] - 1) / 2
return min(dp[m][n], 1)最后更新于