gpt4 book ai didi

algorithm - 查找总长度总和最大的非重叠范围

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:41:17 26 4
gpt4 key购买 nike

我搜索算法,那将帮助我实现一个问题!问题如下:

有一个范围列表,我需要构建一个包含非重叠范围子集(不一定相邻)的列表,以便它们的长度之和尽可能最大。

例如,对于输入列表

[(-1, 3), (2, 4), (0, 5), (-4, -1)]

期望的输出是

[(0, 5), (-4, -1)]

长度之和为 (5 - 0) + ((-1) - (-4)) = 5 + 3 = 8

最佳答案

这是最大加权独立集问题,权重等于区间的长度。

这可以使用动态规划来解决。让间隔按开始时间排序。

然后定义 DP[I_j] = 区间的最大加权集,以便选择 I_j 并且只考虑 I_j 之前的区间。这意味着不应考虑与 I_j 相交的区间。

DP[I_j] = MAX(DP[I_r]) + Wt(I_j)

其中 I_r 是发生在 I_j 之前的间隔。

时间复杂度为 O(n^2),其中 n 是间隔数。

关于algorithm - 查找总长度总和最大的非重叠范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40106985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com