演算法-動態規劃(0-1揹包):演算法與資料結構參考
題目:
給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 -1。例:
輸入: coins = [1, 2, 5], amount = 11
輸出: 3
解釋: 11 = 5 + 5 + 1
思路:
動態規劃。
dp[i] 為金額i時所需最少硬幣個數(i 有 0~amount 共 amount+1個數)
c[j] 為硬幣面額
dp[0]=0,其餘初始化為最大值int_max
dp[i]=min(dp[i],dp[i-c[j]]+1) 迭代找出當前金額所需最小值,每次減去面額+1
硬幣面額》=1,所以 dp[amount]<=amount,否則返回-1
**:
#define min(a,b) (aint
coinchange
(int
* coins,
int coinssize,
int amount)
return
(dp[amount]
>amount)?-
1:dp[amount]
;}
leetcode322 零錢兌換
給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11輸出 3解釋 11 5 5 1 示例 2 輸入 coins 2 amount 3...
leetcode 322 零錢兌換
給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋 11 5 5 1示例 2 輸入 coins 2 amount ...
LeetCode 322 零錢兌換
322 零錢兌換 題目 給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋 11 5 5 1 示例 2 輸入 co...