【发布时间】:2019-07-25 21:28:54
【问题描述】:
我有这样的数据集:
长度:233、333、450、560、650、780 上限:5400
现在我的问题是从长度设置的最高到最低选择项目以弥补限制或尽可能接近。
我知道背包和零钱都可以解决我的问题。我想知道哪个更可取。
注意硬币找零使用贪心算法,背包使用动态规划
【问题讨论】:
-
如果有两种算法是合适的,那么总有一种是你设法在更短的时间内实现的更好的一种。如果您花费太多精力来决定您正在浪费宝贵的公司时间。如果这对您没有帮助,则意味着您有一个要优化的实际属性,可能是速度,可能是代码大小,可能是 RAM 需求。解释您的优化目标会很有帮助。否则这个问题太宽泛,无法回答。
-
一个真正有趣的优化目标是给老师或面试官留下深刻印象。在这种情况下,请看这里:stackoverflow.com/questions/57016753/…
-
我的目标是优化计算时间和实施。我想用贪婪的方法使用硬币找零,因为它很容易实现。但是对于任何数据集,我是否会获得构成每次限制的优化长度集?
-
所以你真的怀疑这两种算法是否合适?我认为你应该edit你的问题更清楚地表达。
标签: java dynamic-programming knapsack-problem coin-change