LeetCode C 零錢兌換

2021-10-08 04:52:35 字數 929 閱讀 9536

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

示例 1:

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

輸出: 3

解釋: 11 = 5 + 5 + 1

示例 2:

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

輸出: -1

說明:

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

思路:

揹包問題。設dp[amount +1]=amount +1 。

初始條件 dp[0]=0 。

我們遍歷總金額amount :

遍歷鈔票種類:

若當前鈔票面額 coins[j] < 當前總金額 i ,則dp[i]=min( dp[i] , dp[ i - coins[ j ] ] +1 )

遍歷完後,若金額 i 沒有金幣組合,則dp[i] 仍為amount +1。

若dp[amount ]=amount +1, 則返回-1。否則,返回dp[amount ]。

**:

class

solution}}

if(dp[amount]

==amount+1)

return dp[amount];}

};

結果:

[1] 我很忙2010:leetcode 322. 零錢兌換(c、c++)

零錢兌換 leetcode

思路 建乙個動態陣列dp,大小為amount 1,dp裡面的值初始化為amount 1。dp i 表示總金額i最少可以用dp i 的零錢兌換,如果coins j 比i小,那麼總金額i可以由dp i conis j 再加上這枚零錢構成,dp i min dp i dp i coins j 1 如果dp...

leedcode 零錢兌換

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

零錢兌換問題

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