变革:动态规划

时间:2017-05-15 16:21:36

标签: dynamic-programming

在之前的一次演讲中,我们被告知使用贪婪的方法来解决变更问题并不总是有效。

这方面的一个例子如下:

我们希望到达n = 14,我们有三个不同价值的硬币:d1 = 1d2 = 7d3 = 10

使用贪婪的方法,这将导致我们10 + 1 + 1 + 1 + 1(5个硬币)。

据说动态问题方法可以准确地解决这个问题。我尝试了它,但它又回到了5。

假设F持有赚取金额所需的硬币数量

F[14] = min {F[14 – 1] , F[14 – 7],  F[14 – 10]} + 1

      = F[14 – 10] + 1 = 4 + 1 = 5

这再次显示我们需要5个硬币,这可以通过使用2个硬币(7 + 7)清楚地完成。

是什么给出的?感谢。

1 个答案:

答案 0 :(得分:1)

如果情况并非如此,您认为min {F[14 – 1] , F[14 – 7], F[14 – 10]}=F[14-10]。最小值实际为F[14-7]=1,因此最佳值为2