在Python中安排任务以获取最大利润的程序
假设我们有一个区间列表,每个区间包含三个值[start,end,profit]。我们一次只能执行一个任务,我们必须找到最大的利润。
因此,如果输入为intervals=[[1,2,100],[3,5,40],[6,19,150],[2,100,250]],则输出为350,因为我们可以选择这两个区间[1,2,100]和[2,100,250]。
要解决此问题,我们将按照以下步骤执行
- d:包含值列表的空映射
- n:0
- 对于intervals中的每个(start,end,profit),执行以下操作
- 如果end> n,则
- n:= end
- 如果end> n,则
- 在d[end]中插入(start,end)对
- A:大小为n + 1的列表,并用0填充
- 对于范围为0到A大小的end,进行以下操作
- 如果end在d中,则
- 对于d[end]中的每个(start,profit)对,执行以下操作
- A[end] := A[start] + profit和A[end-1]的最大值
- 否则,
- A[end]:= A[end-1]
- 如果end在d中,则
- 返回A的最后一个值
示例(Python)
让我们看一下以下实现以更好的理解−