leetcode 312 戳氣球(動態規劃)

2021-10-20 05:31:03 字數 736 閱讀 3527

題目描述:有 n 個氣球,編號為0 到 n - 1,每個氣球上都標有乙個數字,這些數字存在陣列 nums 中。

現在要求你戳破所有的氣球。戳破第 i 個氣球,你可以獲得 nums[i - 1] * nums[i] * nums[i + 1] 枚硬幣。 這裡的 i - 1 和 i + 1 代表和 i 相鄰的兩個氣球的序號。如果 i - 1或 i + 1 超出了陣列的邊界,那麼就當它是乙個數字為 1 的氣球。

求所能獲得硬幣的最大數量。

示例 1:

輸入:nums = [3,1,5,8]

輸出:167

解釋:nums = [3,1,5,8] --> [3,5,8] --> [3,8] --> [8] -->

coins = 315 + 358 + 138 + 181 = 167

示例 2:

輸入:nums = [1,5]

輸出:10

class

solution

int[

] res =

newint

[n +2]

[n +2]

;//res[i][j]儲存的是i到j之間的數可以構成的最大結果值

for(

int i = n -

1; i >=

0; i--)}

}return res[0]

[n +1]

;}}

LeetCode312 戳氣球(難)

看了大概7 8分鐘,沒有思路。自己暴力的想法是n的階乘級別,也難寫。直接看題解,很巧妙,很驚嘆。參考講解 經典動態規劃 戳氣球 直接上 class solution dp i j 表示搓破 i,j 之間的氣球獲得的最大硬幣數量 邊界條件 dp i i 0,它們之間沒有氣球,dp i i 1 0 它們...

leetcode 312 戳氣球(動態規劃)

有 n 個氣球,編號為0 到 n 1,每個氣球上都標有乙個數字,這些數字存在陣列nums中。現在要求你戳破所有的氣球。每當你戳破乙個氣球i時,你可以獲得nums left nums i nums right 個硬幣。這裡的left和right代表和i相鄰的兩個氣球的序號。注意當你戳破了氣球 i 後,...

leetcode 312 戳氣球(區間dp)

312.戳氣球 難度困難297 有n個氣球,編號為0到n 1,每個氣球上都標有乙個數字,這些數字存在陣列nums中。現在要求你戳破所有的氣球。每當你戳破乙個氣球i時,你可以獲得nums left nums i nums right 個硬幣。這裡的left和right代表和i相鄰的兩個氣球的序號。注意...