美文网首页
Weighted Job Scheduling

Weighted Job Scheduling

作者: Super_Alan | 来源:发表于2018-04-26 02:08 被阅读0次

Input: Number of Jobs n = 4
Job Details {Start Time, Finish Time, Profit}
Job 1: {1, 2, 50}
Job 2: {3, 5, 20}
Job 3: {6, 19, 100}
Job 4: {2, 100, 200}
Output: The maximum profit is 250.
We can get the maximum profit by scheduling jobs 1 and 4.
Note that there is longer schedules possible Jobs 1, 2 and 3
but the profit with this schedule is 20+50+100 which is less than 250.


YouTube 题解

思路:DP

  • 将 job 按 complete time 升序排序
  • 状态定义 int[] dpMaxProfit = new int[jobs.length + 1], dp[i] 代表以 jobs[i] 为最后一份 job 所产生的最大收益
  • 状态转移方程:dp[i] = max(dp[0 ~ (i-1)]) + jobs[i]
  • 初始化: dp[0] = 0
  • 循环体:双循环
  • 返回值 max(dp[i])

这里的jobs 的profit 是有变化的,如果是单一值,就变成了一个人可以从中做最多多少分工作。Meeting Room 问题就变成,一个人最多可以参加多少会议;一个飞机最多可以飞多少个航班。

相关文章

网友评论

      本文标题:Weighted Job Scheduling

      本文链接:https://www.haomeiwen.com/subject/wngulftx.html