LeetCode 题解:518. 零钱兑换 II,动态规划,JavaScript,详细注释

原题链接:518. 零钱兑换 II
解题思路:
- 假设输入: - amount = 5, coins = [1, 2, 5],如果用长度为- amount + 1的- dp数组递推,需要满足如下特性:
    * 如果用长度为amount + 1的dp数组递推。
* 每个索引代表了递推到的金额。
* 每个元素是硬币组合数。
    * 0位置是初始状态,设置为1,表示都从1种组合数开始递推。
- 我们可以将其按照硬币种类拆分递推结果: 
    * 硬币1:[1,1,1,1,1,1]
    * 硬币2:[1,0,1,0,1,0]
    * 硬币5:[1,0,0,0,0,1]
    * 硬币1、2:[1,1,2,2,3,3]
    * 硬币1、2、5:[1,1,2,2,3,4]
- 递推方法如下: 
    * 依次计算每个硬币面额coin的递推结果。
    * 当前金额i,是从i - coin添加了coin而来。
    * 当前新的硬币组合数dp[i],等于上一种硬币递推到i的组合数dp[i],加上i - coin的组合数dp[i - coin]而来。
    * 状态转移方程为:dp[i] = dp[i] + dp[i - coin]。
复制代码
 版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/180956b6f18a2d13c85b258ca】。文章转载请联系作者。











 
    
评论