【发布时间】:2012-10-01 04:59:00
【问题描述】:
在给定一组硬币的情况下,你如何以最优化的方式达到给定的总和?
假设在这种情况下,我们有 1、5、10、20 和 50 美分硬币的随机数字,其中最大的硬币优先。
我的第一个直觉是使用所有可能适合的最大硬币,然后如果超过总和,则使用价值下一个最小的硬币。
这种方法是否可行或有任何不足之处?有没有更有效的方法?
【问题讨论】:
-
看看wcipeg.com/wiki/…,它解释了这个确切概念以及如何使用动态规划来解决它。
-
您首先必须检查给定的一组硬币 C(在您的示例中为 C={1,5,10,20,50})是否是规范的(或在某些文章中是有序的)。如果它是贪心算法给出任何给定数量的最佳答案,如果不是那么你必须回退 dp 以获得最佳答案