518. 零钱兑换 II golang动态规划
生活随笔
收集整理的這篇文章主要介紹了
518. 零钱兑换 II golang动态规划
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
518. 零錢兌換 II
給定不同面額的硬幣和一個總金額。寫出函數來計算可以湊成總金額的硬幣組合數。假設每一種面額的硬幣有無限個。
示例 1:
輸入: amount = 5, coins = [1, 2, 5]
輸出: 4
解釋: 有四種方式可以湊成總金額:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
示例 2:
輸入: amount = 3, coins = [2]
輸出: 0
解釋: 只用面額2的硬幣不能湊成總金額3。
示例 3:
輸入: amount = 10, coins = [10]
輸出: 1
注意:
你可以假設:
0 <= amount (總金額) <= 5000
1 <= coin (硬幣面額) <= 5000
硬幣種類不超過 500 種
結果符合 32 位符號整數
代碼
func change(amount int, coins []int) int {dp := make([]int, amount+1)dp[0] = 1// 判斷是外循環還是內循環, 完全背包問題(硬幣可以重復使用)for _, coin := range coins {for i := coin; i <= amount; i++ { // 從coin開始遍歷,小于coin的值沒有意義dp[i] = max(dp[i], dp[i] + dp[i-coin])//dp[i] += dp[i-coin]}}return dp[amount] }func max(n, m int) int {if n > m {return n} else {return m} }總結
以上是生活随笔為你收集整理的518. 零钱兑换 II golang动态规划的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 光遇手游风行季小金人有几个
- 下一篇: 治疗不孕不育排名