322.零钱兑换
322.零钱兑换
题解
//state: dp[i]金额为i时所需最少硬币个数
//function: dp[i]=dp[i-n]+1
//intialize:dp[0]=0 ,别的都正无穷
//answer: dp[amount]
代码
package main func coinChange(coins []int, amount int) int { dp := make([]int, amount+1) for i := range dp { dp[i] = 0x3f3f3f3f } dp[0] = 0 for i := 0; i <= amount; i++ { for j := len(coins) - 1; j >= 0; j-- { if coins[j] <= i { dp[i] = min(dp[i-coins[j]]+1, dp[i]) } } } if dp[amount] >= 0x3f3f3f3f { return -1 } return dp[amount] } func min(a, b int) int { if a > b { return b } return a }