Leetcode322 零錢兌換(C語言)

2021-10-02 21:51:04 字數 734 閱讀 8749

演算法-動態規劃(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...