https://leetcode.com/problems/coin-change/
这道题其实也相当于是动态规划中的记事本问题。给定硬币的数量集合,要求一个钱数能够硬币求和的最小硬币数。我们可以先设置一个数组,来表示i钱数能够被res[i]个硬币组合。那么res[i]=min(res[i],res[i-coin[j]]+1)
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
vector<int> res(amount+1,amount+1);
res[0]=0;
for(int i=1;i<=amount;i++){
for(int j=0;j<coins.size();j++){
if(coins[j]<=i){
res[i]=min(res[i],res[i-coins[j]]+1);
}
}
}
return res[amount]>amount?-1:res[amount];
}
};