【发布时间】:2025-12-13 15:40:02
【问题描述】:
示例 1:
商店销售啤酒,可用包装为每包 6 和 10 个单位。客户输入 26,算法回复 26,因为 26 = 10 + 10 + 6。
示例 2:
销售香料,可用包为 0.6、1.5 和 3。目标值 = 5。算法返回值 5.1,因为它是最接近的大于使用包(3、1.5、0.6)可能实现的目标的数字。
我需要一个能提示该数字的 Java 方法。
Bin packing problem 中描述了类似的算法,但它不适合我。 我试过了,当它返回的数字小于目标时,我再次运行它并增加了目标数。但是当包的数量很大时效率不高。
我需要几乎相同的算法,但最近的数字相等或更大。
类似问题:Find if a number is a possible sum of two or more numbers in a given set - python。
【问题讨论】:
-
你给了我一些我已经知道的提示。我的目标是获得一种可以正常工作的纯方法,因此您的答案并不比我在谷歌上搜索的其他答案更好。而你的建议:“简单算法”需要很多时间。
-
“纯方法”是什么意思?我们提供的是一个伪多项式的最优解,它可能尽可能好,因为这个问题是 NP 难的。另外,将来,请在问题中包含您已经知道的内容。否则我们怎么知道你需要知道什么?
-
如果您有不清楚的地方,您可以随时在答案上写 cmets 要求澄清。