获得成对的最大数目'第二个元素对第一个元素给予权重限制



我正在看面试问题的示例,然后这个跳出来了。

问题要求一个程序接受两个数字,L(极限)和C(要输入的情况数)。然后输入C个整数对,其中整数对由(weight, value)组成。

现在,程序应该给出权重之和小于或等于极限的最大可能值。

例如,如果有人输入:

(10、4),(5,2)(1, 1),(4、9),(5、7)

程序应该输出17。第一对声明重量限制是10,并且将输入4个测试用例。接下来的四对是测试用例,最理想的组合由最后三个用例组成,因为它们的权重加起来是<= 10,而值的结果是17,这是给定极限的最高可能值。

我一直在尝试解决这个问题,但我没有找到一个真正有效的解决方案。到目前为止,我所采用的方法是找出所有可能的权值之和小于或等于极限,然后简单地看它们的和,然后选择最大的。但我觉得这是一个非常低效的解决方案,也许可以使用某种排序来实现更好的解决方案。如有任何建议,我将不胜感激。

这是背包问题的一个实例。维基百科页面列出了许多已知的有效解决这个问题的算法。您可能想从这些算法中获得一些灵感。

最新更新