我正在查看示例面试问题,这就出现了。
该问题要求一个程序包含两个数字,L(限制)和C(要输入的个案数)。然后,输入C量的整数对,其中该对由(权重,值)组成。
现在,程序应该给出权重加起来小于或等于限制的最大可能值。
例如,如果有人输入:
(10,4), (5,2), (1,1), (4,9), (5,7)
程序应输出17.第一对表示权重限制为10,并且将输入4个测试用例。接下来的四对是测试用例,最理想的组合由最后三种情况组成,因为它们的权重加起来<= 10而值得到17,这是给定限制的最高可能值。
我一直试图解决这个问题,但我找不到真正有效的解决方案。到目前为止,我采用的方法是找到所有可能的权重,加起来小于或等于限制,然后只需查看所有的总和,然后选择最大的权重。但我觉得这是一个非常低效的解决方案,使用某种排序可能更好。任何建议将不胜感激。