美文网首页
动态规划7:换零钱

动态规划7:换零钱

作者: RichardBillion | 来源:发表于2019-08-03 21:27 被阅读0次

有如下面值的硬币,兑换Z元,最少需要多少枚。
[1, 2, 5] 兑换11元

定义状态 DP(n)为兑换n元时需要的最小硬币数量

DP(n) = min(DP(n-1), DP(n-2), DP(n-5)) + 1

换成普遍的定义则为: DP(n) = min(DP(n-arr[j])) + 1 , arr为硬币面值的组合,j为硬币面值的遍历值.

DP[n] 即为所求。

初始值的定义:DP(0) = 0

function minCount(arr, total) {
    const len = arr.length;
    // 初始化保存结果的数组,长度为total+1. 并且都赋予初值total+1
    let DP = new Array(total+1).fill(total+1);

    DP[0]=0;

    for(let i = 1; i <= total; i++) {
        for(let j = 0; j < len; j++) {
            // 币值不大于兑换金额时才可兑换
            if(arr[j] <= i) {
                DP[i] = Math.min(DP[i], DP[i - arr[j]] + 1)
            }
        }
    }

    // DP中都赋初值为total+1, 倘若兑换金额无法正好凑出,则返回-1
    return DP[total] > total ? -1 : DP[total];
}

const arr = [1,2, 5];
minCount(arr, 11);

相关文章

  • 动态规划7:换零钱

    有如下面值的硬币,兑换Z元,最少需要多少枚。[1, 2, 5] 兑换11元 定义状态 DP(n)为兑换n元时需要的...

  • 动态规划入门题——换零钱

    萌新一枚在本校OJ刷题刷到一道动态规划的换零钱问题,看了网上CSDN的一篇文章,算是弄懂了换零钱动态规划的原理吧。...

  • 背包系列问题3——换零钱

    参考资料:1. 动态规划之背包问题系列2. 换零钱 只能从选择一个》》01背包问题:是否可以,max改为||

  • 换零钱问题

    问题描述 100元换零钱1元、2元、5元、10元、20元、50元有多少种组合方案? 解题思路 使用动态规划来求解,...

  • 背包系列问题——换零钱2

    参考资料:1. 动态规划之背包问题系列2. 换零钱2 无限硬币》》完全背包问题只不过把问题从最大收益换做种类,ma...

  • 算法-理解动态规划

    算法-动态规划(1)最大子序和问题[/p/7e787a287876]算法-动态规划(2)最长公共子串[/p/7ba...

  • 7. 动态规划

    分治方法 将问题划分成互不相交的子问题 递归地求解子问题 将子问题的解组合起来 动态规划(两个要素:最优子结构、子...

  • 算法7:动态规划

    动态规划的关键思想在于将问题转换成较小的子问题,然后根据子问题的结果总结出一个状态转移方程,最后得到整个问题的解 ...

  • Algorithm进阶计划 -- 动态规划(上)

    动态规划动态规划的基本原理动态规划的运用 1. 动态规划的基本原理 动态规划(Dynamic Programmi...

  • 4. 动态规划算法

    1. 动态规划算法总结2. 漫画:什么是动态规划?3.算法之动态规划4. 动态规划-算法

网友评论

      本文标题:动态规划7:换零钱

      本文链接:https://www.haomeiwen.com/subject/himhdctx.html