【Day45】518. 零钱兑换 II

518. 零钱兑换 II

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

示例 1:

输入: amount = 5, coins = [1, 2, 5]
输出: 4
解释: 有四种方式可以凑成总金额:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1

示例 2:

输入: amount = 3, coins = [2]
输出: 0
解释: 只用面额2的硬币不能凑成总金额3。

示例 3:

输入: amount = 10, coins = [10] 
输出: 1

注意:

  • 0 <= amount (总金额) <= 5000
  • 1 <= coin (硬币面额) <= 5000
  • 硬币种类不超过 500 种
  • 结果符合 32 位符号整数

题解:

class Solution {
public:
    int change(int amount, vector& coins) {
        int n = coins.size();
        vector dp(amount+1);
        dp[0] = 1;
        for(int i = 1; i<=n; i++)
        {
            int val = coins[i-1];
            for(int j = val; j <= amount;++j)
            {
                dp[j] += dp[j-val];
            }
        }
        return dp[amount];
    }
};

   转载规则


《【Day45】518. 零钱兑换 II》 Tyzhao 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
【Day46】279. 完全平方数 【Day46】279. 完全平方数
279. 完全平方数给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。 完全平方数 是一个整
2021-06-11
下一篇 
【Day44】879. 盈利计划 【Day44】879. 盈利计划
879. 盈利计划集团里有 n 名员工,他们可以完成各种各样的工作创造利润。 第 i 种工作会产生 profit[i] 的利润,它要求 group[i] 名成员共同参与。如果成员参与了其中一项工作,就不能参与另一项工作。 工作的任何至少产生
2021-06-09
  目录