给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
int size=coins.size();
vector<int > dp(amount+1,-1);
sort(coins.begin(),coins.end());
dp[0]=0;
for(int i=1;i<=amount;i++){
for(int c=0;c<size;c++){
if (coins[c]>i) break;
if(dp[i-coins[c]]!=-1){
dp[i]=dp[i]==-1?dp[i-coins[c]]+1:min(dp[i],dp[i-coins[c]]+1);
}
}
}
return dp[amount];
}
};