题目链接:https://leetcode.cn/problems/coin-change/
题目如下:
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
vector<int> dp(amount+1,INT_MAX);
//dp[i]:组成价格i的最少数量
dp[0]=0;
for(int i=1;i<=amount;i++){//遍历背包
for(int j=0;j<coins.size();j++){//遍历物品
if(i-coins[j]>=0&&dp[i-coins[j]]!=INT_MAX)//为了确保这唯一的来源是可行的
dp[i]=min(dp[i-coins[j]]+1,dp[i]);
}
}
return dp[amount]==INT_MAX?-1:dp[amount];//特殊情况做判断
}
};