【发布时间】:2023-03-30 03:20:01
【问题描述】:
我正在寻找一种算法来解决以下问题(我会用一个例子来解释):
假设我有 10.000 美元的可用金额和以下我可以用我的金额支付的费用:
成本 1:1.000 美元
成本 2:3.000 美元
成本 3:4.000 美元
成本 4:5.000 美元
无法部分支付费用,因此您要么支付全部费用,要么根本不支付。我正在寻找的是一种算法,它可以帮助我找到不会超过可用金额的成本组合,但另一方面会使用大部分或全部可用金额。
在我的示例中,它将是:成本 1 + 成本 3 + 成本 4。
我还想添加一个参数,该参数确定可以最大程度地资助多少成本。如果我在我的示例中说只能支付两个成本,则将返回成本 3 和成本 4。
我的方法是检查所有可用的组合,将它们相加,然后选择最能利用可用数量的组合。但是我想知道是否有一种最简单的方法可以找到最佳组合。
【问题讨论】:
-
这听起来像是knapsack problem 的变体。
-
@Oli Charlesworth:感谢您让我知道如何调用此问题以及提供的链接。因为我总是只有很少的成本,所以找到最佳解决方案的最佳方法是我最初的方法来遍历所有可能的组合并选择最好的组合(正如 Mecki 所建议的那样)。
标签: algorithm