【发布时间】:2017-10-28 10:17:42
【问题描述】:
我的问题是:我需要一个算法,如果我有一些列表,按特定顺序,我想找到一组给我最高总和的值。事实是当我取一个值时,它必须大于或等于最后一个取值。一个例子:
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 之间的所有数字。
我希望我说清楚了。谢谢你的帮助。
【问题讨论】:
-
输入是列表的意义何在?可以改为平面列表吗?
-
输入也可以是一个包含多个值的列表,给定子列表的边界。例如 {5, 10, 1, 9, 8, 4, 4, 4, 4, 4} 第一个 [0, 3] 第二个 [3, 5] 第三个 [5, 9]
-
我不明白你为什么需要第二个维度。对我来说,这个问题听起来像是“找到一个总和最高的递增子序列。”
-
似乎可以按任意顺序获取列表之一中的元素。重要的是从第一个列表中选择的所有元素都在从第二个列表中选择的所有元素之前,等等。这是正确的吗?
标签: arrays algorithm list sum sequence