硬币变化 - DP
Posted
技术标签:
【中文标题】硬币变化 - DP【英文标题】:Coin change - DP 【发布时间】:2015-01-01 13:58:51 【问题描述】:我在理解动态规划中的硬币找零问题时遇到了一个小问题。 简而言之,我必须使用最少数量的硬币来更改金额。
我有 n 个面额为 1 = v1
在上面的公式中,我不明白 M(j-vi) 是什么意思。 vi必须是j-1中使用的硬币的最大值吗?
【问题讨论】:
***.com/questions/47384891/…请看。 【参考方案1】:你正在为不同的值 j 制作成堆的硬币,命名为 M(j)。 M(j - vi) 的要点是考虑一个价值为 vi 的硬币,那么你将它添加到哪个堆才能达到价值 j?价值 j - vi 当然,因为加上你现在考虑的硬币加起来价值 j。
当然,目标是尽可能少的硬币,所以你可以通过添加一个 vi 的硬币来获得最小的堆以达到j
的值。这就是min
所做的。 +1,因为您将硬币 vi 添加到堆中以形成新堆 M(j)。
【讨论】:
【参考方案2】:加一表示您多消费了一枚硬币,因此您所做的总变化将减少所添加硬币的数量,这就是原始 j 值减少的原因。
【讨论】:
以上是关于硬币变化 - DP的主要内容,如果未能解决你的问题,请参考以下文章