312 戳氣球 使用回溯,分治,dp

2021-10-23 01:22:12 字數 545 閱讀 8901

可以使用三種方法:

回溯法,回溯法可以遍歷每一種可能,屬於暴力解法。

分治法,分治法首先要得到狀態轉移方程。

dp動態規劃

首先為陣列增加首位

fun(i,j)相當於不戳邊界 i,j。戳其中的任意乙個氣球得到的硬幣數。

對於確定的最後戳中間k索引的氣球fun(i,j)=fun(i,k)+fun(k,j)+nums[i]*nums[k]*nums[j];

所以有fun(i, j)=max;對於所有的k來說。

使用cache[i][j]來儲存結果,避免重複計算。

public int maxcoins(int nums) 

public int helper(int nums,int start,int end,int cache)

}} return dp[0][n_helper.length-1];

}

312 戳氣球 動態規劃

難度 困難 2020 7 19每日一題打卡 題目描述 解題思路 今天是抄答案而且還抄的迷迷糊糊的一天 知道要這樣做,但是仔細去想為什麼是這樣的,又說不出個所以然 首先在陣列左右兩端新增虛擬氣球節點,是不能被戳破的,這樣能方便處理邊界,而且保證總是有三個氣球相乘。然後注意動態規劃的順序,要從區間右邊開...

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 後,...