【发布时间】:2013-05-03 08:13:07
【问题描述】:
这个问题专门针对硬币找零问题。 我知道找到用于找到任何数量的零钱的最佳硬币数量的算法,我也理解它,但我不明白的是,如果你愿意找到这种解决方案的路径,我怎么能“标记”。我曾尝试使用父指针,我确信这是这样做的方法,但我根本不知道我将如何实现它。这是一个例子。 例子: 给定硬币面额:1、10、25 变化:30 最佳解决方案需要:3个硬币 使用的硬币:10、10、10
我不太擅长解决动态规划问题。
【问题讨论】:
-
假设你知道 1 到 29 的最优解。你怎么能用它来找到 30 的解?
-
对不起,我忘了告诉你们,我目前对这个问题的解决方案只保存在一个数组中,我没有做表。所以我有 1 -29 的解决方案,但使用的硬币数量,而不是哪个硬币。如果这应该是直观的,我很抱歉,但它真的不适合我。我想我的问题是:如果我要实现一个二维表,其中行数从 0 到 n,硬币面额从 1 到 k 作为列,每个单元格的值是多少,我将如何计算它们?
-
您可以更有效地解决它。保留指向当前最优解的前一个最优解的指针。例如。对于 10,有一个指向零的链接。对于 20 链接到 10,对于 30 链接到 20。现在您所要做的就是回溯。 30 的链接是 20,所以 30-20 = 10,20 的链接是 10-> 20-10 = 10 和 10-0=10。这就是你如何获得 3 个 10 秒
标签: algorithm recursion dynamic-programming coin-change