美文网首页
硬币问题-动态规划

硬币问题-动态规划

作者: MoneyRobber | 来源:发表于2019-02-20 17:58 被阅读0次

    问题描述

    假设有 1 元,3 元,5 元的硬币若干(无限),现在需要凑出 11 元,问如何组合才能使硬币的数量最少?

    问题分析

    我们先假设一个函数 d(i) 来表示需要凑出 i 的总价值需要的最少硬币数量
    1.i = 0时候,d(i) = 0
    2.i = 1时候,d(i) = 1
    3.i = 2时候,d(i)=2
    4.i = 3时候,d(i) = 1
    ...
    有 d(i) = d(j) + 1
    d(i)表示这一步的最优解,d(j)表示上一步的最优解,上一步的最优解加上一枚硬币就能得出这一步的最优解,这一枚硬币可能是1元,3元,5元,所以如下
    d(i) = d(i - 1) + 1;//加一个1元硬币
    d(i) = d(i - 3) + 1;//加一个3元硬币
    d(i) = d(i - 5) + 1;//加一个5元硬币
    由于我们要求出最少的硬币数量,所以我们比较d(i - 1),d(i - 3),d(i - 5)拿出最小的值,这个最小的值加1就是我们要求的结果

    代码

    相关文章

      网友评论

          本文标题:硬币问题-动态规划

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