【问题标题】:Algorithm for computing a sum with multiples of specific values计算具有多个特定值的总和的算法
【发布时间】:2017-11-05 04:39:50
【问题描述】:

我正在尝试使用数字子集的倍数来计算已知总和或与该总和最接近的值。在这种方法中,我想最小化倍数或系数。

例如,如果我有号码 120 并且我有一组 50s20s,我会得到 ​​p>

120 = 2*50 + 1*20. 

但是数字的集合是有限的,所以如果我只有1x506x20s,我会得到

120 = 6*20. 

此外,如果我只有5x20s,因为我想最小化系数,我会拥有

110 = 1*50 + 3*20. 

请注意,在这种情况下,该值是最接近总和的值。如果总和可以达到,则优先于具有最接近总和且倍数较少的值。

是否有已知的算法来实现这个结果?

【问题讨论】:

  • 你读过生成函数吗?

标签: algorithm


【解决方案1】:

您寻求的算法通常被称为“贪心”算法。您可以在此处阅读有关该理论及其工作原理的信息:Cut optimisation algorithm

与您的特定要求类似的常见用例是制造中使用的切割长度优化。查看这篇讨论该问题的维基百科文章,以及所需优化算法背后的演算:https://en.m.wikipedia.org/wiki/Cutting_stock_problem

有关此操作的示例,请尝试使用脚本算法作为宏的此电子表格:http://www.cutoptimizer.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多