322. 零钱兑换

给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 

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];
        
    }
};
 

猜你喜欢

转载自blog.csdn.net/a15929748502/article/details/88543739
今日推荐