【发布时间】:2021-06-11 21:15:24
【问题描述】:
给定一个大小为 n 的整数数组。 整数代表完成某项工作的时间。 两名工人需要在最短的时间内完成这些工作,尽管他们不能重叠。 假设给定的数组大小为 4,数字为 1、2、4、5。第一个工人按照 [1] [4] [2] [3] 的顺序完成工作,第二个工人按照 [2] [3] [4] [1] 的顺序完成工作。所以完成这些工作所需的最少时间是 12 个单位,因为没有重叠。
如果数组大小为 3,数字为 1、2、4。第一个工作人员按顺序 [1][2][3] 执行作业,第二个工作人员按顺序执行工作 [3][1][2] , 但有个问题。一旦第一个工人完成了工作 2(经过 3 个单位时间),第二个工人仍在做工作 3,所以第一个工人必须等待 1 个单位才能让第二个工人完成他的工作。因此,完成这些工作所花费的最少时间是 1+2+4+1 单位等待 = 8 个单位。
我可以知道采取什么样的方法来解决这个问题吗?我正在使用 C++
【问题讨论】:
-
我能知道采取什么样的方法来解决这个问题吗?我正在使用 c++——这个问题与 C++ 无关。这是一个算法问题,与任何语言无关。它要求你写下如何解决问题的计划——一旦你有了这个计划,然后就涉及如何用 C++(或任何语言)实现该计划的问题。
标签: c++ arrays algorithm optimization dynamic-programming