【发布时间】:2016-10-18 11:26:34
【问题描述】:
我搜索算法,那将帮助我实现一个问题! 问题如下:
有一个范围列表,我需要使用非重叠范围(不一定相邻)的子集构建一个列表,以使它们的长度之和尽可能大。
例如,对于输入列表
[(-1, 3), (2, 4), (0, 5), (-4, -1)]
想要的输出是
[(0, 5), (-4, -1)]
长度总和为 (5 - 0) + ((-1) - (-4)) = 5 + 3 = 8
【问题讨论】:
-
什么是“最大值”?你想最大化什么价值?
-
多少钱?示例 [(1,2), (4,6)] 中的“总和”是多少:是 3=[2-1]+[6-4] 还是 5=[6-1]...?
-
范围的总长度,简而言之。
-
@Treycos 在 this 的情况下,它非常模棱两可,因为间隔有一个共同的末端,所以间隔长度的总和 等于 它们的总跨度.这就是为什么我问另一个例子,有一个洞。
-
@deniska369 好的,所以如果你的意思是 [(1,2), (4,6)] -> [2-1]+[6-4] = 3,那为什么是你的例子结果 [(-1, 3), (-4, -1)] 的总和为 7,而不是 [(0, 5), (-4, -1)] 的总和为 8...?!
标签: algorithm