Skip to content

📚 14.零钱兑换二

💻 代码实现

typescript
/**
 * @url https://leetcode.cn/problems/coin-change-ii/description/
 */

// notice:背包容量为j的最大价值是否能为j,物品可以被选取多少次
// TODO:遍历顺序的考量。dp概念的理解
// []如果求组合数就是外层for循环遍历物品,内层for遍历背包。
// []如果求排列数就是外层for遍历背包,内层for循环遍历物品。
function change(amount: number, coins: number[]): number {
  const dp = new Array(amount + 1).fill(0);
  dp[0] = 1;
  for (let i = 0; i < coins.length; i++) {
    for (let j = coins[i]; j <= amount; j++) {
      dp[j] += dp[j - coins[i]];
    }
  }
  console.log(dp);

  return dp[amount];
}

change(5, [1, 2, 5]);

Released under the MIT License.