Guess Number Higher or Lower II
n = 10, I pick 8.
First round: You guess 5, I tell you that it's higher. You pay $5.
Second round: You guess 7, I tell you that it's higher. You pay $7.
Third round: You guess 9, I tell you that it's lower. You pay $9.
Game over. 8 is the number I picked.
You end up paying $5 + $7 + $9 = $21.class Solution:
def getMoneyAmount(self, n: int) -> int:
p = [[0]*(n+1) for _ in range(n+1)]
for i in range(2,n+1):
for j in range(i-1,0,-1):
globalMin = float('inf')
for k in range(j+1,i):#分割时i,j都不含
globalMin = min(globalMin,k+max(p[j][k-1],p[k+1][i]))
p[j][i] = j if j+1 == i else globalMin #????
return p[1][n]Last updated