coin change 到达amoumt最少货币

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        // dp[i] 到达钱数i 最小的次数
        
        int Max = amount+1;
        vector<int> dp(amount+1,Max);
        dp[0] = 0;
        for(int i = 1 ; i<= amount ;++i){
            for(int j = 0;j<coins.size();++j){
                if(i>=coins[j]){
                    dp[i] = min(dp[i],dp[i-coins[j]]+1);
                }
            }
        }
        return dp[amount]==Max?-1:dp[amount];
        
    }


    int countWays(vector<int> penny, int n, int aim) {
        // write code here
int f[1000]; // aim 小于1000
memset(f,0,sizeof(f)); f[0] = 1;
for(int i = 0;i < n;++ i)
for(int j = penny[i];j <= aim;++ j)
f[j] += f[j - penny[i]];
return f[aim];
    }
};

猜你喜欢

转载自blog.csdn.net/u010325193/article/details/80603374