322 零錢兌換

2022-08-24 22:36:09 字數 660 閱讀 4776

leetcode-322-零錢兌換

給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 -1。

leetcode-322-零錢兌換-官方題解

搜尋回溯 [超出時間限制]

動態規劃(自頂向下)

動態規劃(自底向上)

這種題是很明顯的動態規劃。

我對動態規劃不是特別熟練,因此第一時間沒有思路,想的是乙個二維的陣列,發現並不能推出結果。我在草稿紙上畫了一下寫出了乙個一位陣列的狀態轉移方程:

dp[i] = min(dp[i],dp[i-coins[j]]+1)
這是乙個自底向上方法,這樣的狀態轉移方程是可以求出結果的,但是需要注意一些細節、邊界問題。

我的**是這樣的

class solution 

}count[rem - 1] = min == int_max ? -1 : min;

return count[rem - 1];

}public:

int coinchange(vector& coins, int amount)

};

322 零錢兌換

class solution 不是大的取的越多越好,大的取的很多,最後不能剛好取到,比如22,陣列是10,6,你直接取兩個10肯定不行第乙個數有取1個,取0個或者取多個好幾種取法。比如18,你有10和6,那麼10乙個都不能取 所以要考慮的只是當前這一位可以取幾個 for int i left coi...

322 零錢兌換

最值問題 最優子結構特性 子問題重疊特性 使用動態規劃 狀態轉移方程 列出狀態轉移方程 步驟 1.明確狀態 原問題和子問題中變化的量 amount 連續性變化 2.定義動態規劃陣列 函式的含義 dp n 的含義 湊成n需要的硬幣個數 3.明確選擇 對於每個狀態,可以做出什麼選擇來改變當前狀態 選乙個...

322 零錢兌換

給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋 11 5 5 1 示例 2 輸入 coins 2 amount...