給定不同面額的硬幣 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 = 21 <= coins.length <= 12輸出:2
1 <= coins[i] <= 2^31 - 1
0 <= amount <= 10^4
1class
solution 15}
16}17//
注意return的時候判斷一下是否有更新過
18return dp[amount] > amount ? -1: dp[amount];19}
20 }
居然比動態規劃快。多考慮剪枝條件
1class
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 輸入 ...