原题链接:https://leetcode-cn.com/problems/coin-change/
相关题目:leetcode算法题–完全平方数★
动态规划
dp[i] i从0到amount,dp[i]代表钱数为i时最少硬币数
转移方程
dp[i]=min(dp[i],dp[i-coins[j]]+1)
代码:
int coinChange(vector<int>& coins, int amount) {
int len=coins.size();
vector<int> dp(amount+1,amount+1);
dp[0]=0;
for(int i=0;i<=amount;i++){
for(int j=0;j<len;j++){
if(i>=coins[j])
dp[i]=min(dp[i],dp[i-coins[j]]+1);
}
}
return dp[amount]>amount?-1:dp[amount];
}