【问题标题】:Coin change - DP硬币变化 - DP
【发布时间】:2015-01-01 13:58:51
【问题描述】:

我在理解动态规划中的硬币找零问题时遇到了一个小问题。 简而言之,我必须使用最少数量的硬币来更改金额。

我有 n 个面额为 1 = v1

在上面的公式中,我不明白 M(j-vi) 是什么意思。 vi必须是j-1中使用的硬币的最大值吗?

【问题讨论】:

标签: dynamic-programming coin-change


【解决方案1】:

你正在为不同的值 j 制作成堆的硬币,命名为 M(j)。 M(j - vi) 的要点是考虑一个价值为 vi 的硬币,那么你将它添加到哪个堆才能达到价值 j?价值 j - vi 当然,因为加上你现在考虑的硬币加起来价值 j。

当然,目标是尽可能少的硬币,所以你可以通过添加一个 vi 的硬币来获得最小的堆以达到j 的值。这就是min 所做的。 +1,因为您将硬币 vi 添加到堆中以形成新堆 M(j)。

【讨论】:

    【解决方案2】:

    加一表示您多消费了一枚硬币,因此您所做的总变化将减少所添加硬币的数量,这就是原始 j 值减少的原因。

    【讨论】:

      猜你喜欢
      • 2013-12-09
      • 2012-08-05
      • 1970-01-01
      • 2011-05-11
      • 2016-01-24
      • 2017-10-28
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多