【发布时间】:2021-01-03 12:42:40
【问题描述】:
我该如何解决以下问题?我有使用DP的感觉
给定一个数组的任务复杂度,注意复杂度也是他们需要执行的任务的顺序。约束是每天至少安排一项任务。当天的复杂度是当天最高的任务复杂度。通过优化规划可以实现的总体最小复杂度是多少?
例如,假设有n = 5 任务,其中:
complexity = [1, 5, 3, 2, 4]
测试的长度是days = 2。最好的选择是在第一天执行第一个任务,在第二天执行其余任务。第一天的复杂度是 1,因为这是唯一的任务,第二天的复杂度是 5,因为这是当天最复杂任务的复杂度。因此,答案是1 + 5 = 6。
Example 1:
5 -> complexity[] size n = 5
30
10
40
20
50
2 -> Days =2
输出:
80
【问题讨论】:
-
我无法理解,
1 + 5 = 6在您的示例中如何选择是最佳的,Note that the complexity is also the order of the task they need to be executed,您能澄清一下哪个顺序吗?如果您的意思是按顺序排列的数组,那么我猜是问题所在公式是错误的。 -
@4.Pi.n 不是索引的顺序。这意味着我需要先执行复杂度为 1 的任务,然后是复杂度为 2 的任务,然后是 3... 在第一个示例中。
-
在你的例子中,为什么你选择
1 + 5 = 6,是最优的,为什么不选择1 + 2 = 3,什么是约束意味着这个选择?。 -
因为这样的描述:“当天的复杂度是当天最高的任务复杂度”。所以第一天完成1,第二天完成,2,3,4,5,所以总复杂度是1+5=6
-
抱歉,我认为您对订单的看法是正确的。我认为这确实意味着应该根据指标来计划任务。否则,示例 1 的答案应该是 60 而不是 80.@4.Pi.n
标签: algorithm scheduled-tasks dynamic-programming