動態規劃 零錢兌換

2022-07-25 20:30:11 字數 1161 閱讀 7299

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

你可以認為每種硬幣的數量是無限的。

示例 1:

輸入:coins = [1, 2, 5], amount = 11

輸出:3 

解釋:11 = 5 + 5 + 1

示例 2:

輸入:coins = [2], amount = 3

輸出:-1

示例 3:

輸入:coins = [1], amount = 0

輸出:0

示例 4:

輸入:coins = [1], amount = 1

輸出:1

示例 5:

輸入:coins = [1], amount = 2

輸出:2

1 <= coins.length <= 12

1 <= coins[i] <= 2^31 - 1

0 <= amount <= 10^4

1

class

solution 15}

16}17//

注意return的時候判斷一下是否有更新過

18return dp[amount] > amount ? -1: dp[amount];19}

20 }

居然比動態規劃快。多考慮剪枝條件

1

class

solution

8public

void dfs(int coins,int index,int amount,int

cnt)

12for(int c=amount/coins[index];c>=0;c--)

19if(next_cnt+1>=ans)

22 dfs(coins,index-1,rest,next_cnt);23}

24}25 }

動態規劃 零錢兌換

問題描述 給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。你可以認為每種硬幣的數量是無限的。比如coins 1,2,5 amount 11,11 5 5 1,最終結果為3 演算法思路 本...

零錢兌換(動態規劃)

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

零錢兌換 動態規劃

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