我們正在玩乙個猜數遊戲,遊戲規則如下:
我從 1 到 n 之間選擇乙個數字。
你來猜我選了哪個數字。
如果你猜到正確的數字,就會 贏得遊戲 。
如果你猜錯了,那麼我會告訴你,我選的數字比你的 更大或者更小 ,並且你需要繼續猜數。
每當你猜了數字 x 並且猜錯了的時候,你需要支付金額為 x 的現金。如果你花光了錢,就會 輸掉遊戲 。
給你乙個特定的數字 n ,返回能夠 確保你獲勝 的最小現金數,不管我選擇那個數字 。
dp不可能dp的,只會暴搜吃吃爛分
1class
solution:
2def getmoneyamount(self, n: int) ->int:
3 self.dict ={}
4return
self.search(0, n)56
defsearch(self, left, right):
7if right <=left:
8return09
10if
self.dict.get((left, right), false):
11return
self.dict.get((left, right))
1213
#split_index = self.find_split_index(nums)
14 max_cost = float('
inf')15
16for 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
2122
return max_cost
375 猜數字大小 II
我們正在玩乙個猜數遊戲,遊戲規則如下 我從1到n之間選擇乙個數字,你來猜我選了哪個數字。每次你猜錯了,我都會告訴你,我選的數字比你的大了或者小了。然而,當你猜了數字 x 並且猜錯了的時候,你需要支付金額為 x 的現金。直到你猜到我選的數字,你才算贏得了這個遊戲。示例 n 10,我選擇了8.第一輪 你...
375 猜數字大小 II
我們正在玩乙個猜數遊戲,遊戲規則如下 我從1到n之間選擇乙個數字,你來猜我選了哪個數字。每次你猜錯了,我都會告訴你,我選的數字比你的大了或者小了。然而,當你猜了數字 x 並且猜錯了的時候,你需要支付金額為 x 的現金。直到你猜到我選的數字,你才算贏得了這個遊戲。示例 n 10,我選擇了8.第一輪 你...
375 猜數字大小 II
我們正在玩乙個猜數遊戲,遊戲規則如下 我從 1 到 n 之間選擇乙個數字,你來猜我選了哪個數字。每次你猜錯了,我都會告訴你,我選的數字比你的大了或者小了。然而,當你猜了數字 x 並且猜錯了的時候,你需要支付金額為 x 的現金。直到你猜到我選的數字,你才算贏得了這個遊戲。示例 n 10,我選擇了8.第...