Python中计算所有工作完成所需的最短时间程序
假设我们有一个名为jobs的数组,其中jobs[i]表示完成第i个工作需要的时间。此外,我们还有另一个值k,可以分配给他们的工作。每个工作应分配给恰好一个工人。一个工人的工作时间是完成分配给他们的所有工作所需的总时间。我们必须找到任何分配的最小可能最大的工作时间。
因此,如果输入为jobs = [2,1,3,8,5],k = 2,则输出将为10,因为我们可以将工作分配如下:
- 工人1:2 + 5 + 3 = 10
-
工人2:1 + 8 = 9
因此,最大时间是10。
要解决这个问题,我们将执行以下步骤 –
- 将jobs列表按相反的顺序排序
-
将前k个工作分配给assign列表
-
将remaining jobs分配给jobs列表
-
定义一个名为dp()的函数。这将采取i,assign
-
如果i与jobs的大小相同,则
- 返回assign的最大值
- ans = infinity
- for x in range 0 to k – 1, do
- assign =从assign获取新列表
-
assign[x] = assign [x] + jobs[i]
-
ans = ans和dp(i + 1,assign)的最小值
-
assign[x] = assign [x] – jobs[i]
- for x in range 0 to k – 1, do
-
返回ans
-
从主方法中返回dp(0,assign)
示例
让我们看一下以下实现以获得更好的理解