1. 程式人生 > 其它 >375. 猜數字大小 II

375. 猜數字大小 II

我們正在玩一個猜數遊戲,遊戲規則如下:

我從1到 n 之間選擇一個數字。
你來猜我選了哪個數字。
如果你猜到正確的數字,就會 贏得遊戲 。
如果你猜錯了,那麼我會告訴你,我選的數字比你的 更大或者更小 ,並且你需要繼續猜數。
每當你猜了數字 x 並且猜錯了的時候,你需要支付金額為 x 的現金。如果你花光了錢,就會 輸掉遊戲 。
給你一個特定的數字 n ,返回能夠 確保你獲勝 的最小現金數,不管我選擇那個數字 。

dp不可能dp的,只會暴搜吃吃爛分

 1 class Solution:
 2     def getMoneyAmount(self, n: int) -> int:
 3         self.dict = {}
4 return self.search(0, n) 5 6 def search(self, left, right): 7 if right <= left: 8 return 0 9 10 if self.dict.get((left, right), False): 11 return self.dict.get((left, right)) 12 13 # split_index = self.find_split_index(nums) 14 max_cost = float('
inf') 15 16 for split_index in range(left, right + 1): 17 cost = split_index 18 cost += max(self.search(left, split_index - 1), self.search(split_index + 1, right)) 19 max_cost = min(max_cost, cost) 20 self.dict[(left, right)] = max_cost 21 22 return
max_cost