[375][中等][动态规划] 猜数字大小 II
题目描述
解题思路
class Solution:
def getMoneyAmount(self, n: int) -> int:
dp = [[float('inf') for i in range(n + 1)] for _ in range(n + 1)]
for i in range(1, n + 1):
dp[i][i] = 0
for j in range(2, n + 1): # 终止位
for i in range(j - 1, 0, -1): # 起始位
for k in range(i + 1, j): # 分割位
dp[i][j] = min(dp[i][j], max(dp[i][k - 1], dp[k + 1][j]) + k)
dp[i][j] = min(dp[i][j], dp[i + 1][j] + i)
dp[i][j] = min(dp[i][j], dp[i][j - 1] + j)
return dp[1][-1]最后更新于