列表中最大的总和小于数字

时间:2017-07-31 01:50:09

标签: java

如果我有一个数字列表,我如何快速找到小于另一个数字的最大总和。例如,在列表{40,60,22,15,51,22,5,55,32,70}中,最大的总和小于50.感谢您的帮助,因为我能找到的唯一解决方案是递归,这似乎效率低下。这是一个我当时无法解决的比赛问题,从那以后一直让我感到沮丧。

1 个答案:

答案 0 :(得分:0)

这相当于背包问题,这是动态编程中的一个着名问题。 可以这样想:你是一个小偷,你想尽可能多地偷窃。你的背包有一个固定的尺寸,你只能拿那么多。有一个项目列表,每个项目都有一定的值和大小。你想最大化被盗的价值。挑选哪些物品的最佳方式是什么? 所以在你的情况下,50是背包的大小,数字是项目(这里的值=大小)。

希望这有帮助!