我的问题是:我需要一个算法,如果我有一些列表,按特定的顺序,我想找到一组给我最高总和的值。事实上,当我取一个值时,它必须大于或等于最后一个值。一个例子:
List1 {5, 10, 1}
List2 {9, 8}
List3 {4, 4, 4, 4, 4}
正确的答案是{1, 5, 8, 9}
(实际上我在第一个列表中取1和5,然后我丢弃10,因为如果我接受它我不能取9和8,哪个总和大于10.我丢弃4,4, 4,4,4因为如果我接受它们,我会丢弃其他数组中1到4之间的所有数字。)
我希望我能说清楚自己。谢谢你的帮助。
答案 0 :(得分:0)
您可以使用最长增长子序列算法的变体来解决此问题。 LIS存储到目前为止找到的最佳长度,而您需要的算法将存储到目前为止所用项目的总和。在运行结束时,存储在辅助阵列中的最高总和将为您的问题提供答案。