↓ Skip to main content
  1. Science/
  2. Computer/

0375.Guess Number Higher or Lower II

Solution

class Solution:
    def getMoneyAmount(self, n: int) -> int:
        f = [[0] * (n + 1) for _ in range(n + 1)]
        for i in range(n - 1, 0, -1):
            for j in range(i + 1, n + 1):
                f[i][j] = j + f[i][j - 1]
                for k in range(i, j):
                    f[i][j] = min(f[i][j], max(f[i][k - 1], f[k + 1][j]) + k)
        return f[1][n]

# 本地测试
if __name__ == "__main__":
    sol = Solution()
    print(sol.getMoneyAmount(10)) # 16
    print(sol.getMoneyAmount(1))  # 0
    print(sol.getMoneyAmount(2))  # 1