在 Python 中查找可以放在卡车上的最大单位的程序

假设我们有一组表示为称为 boxTypes 的二维数组的框,其中 boxTypes[i] 包含两个元素 [类型 i 的框数,类型 i 的每个框的单元数]。现在我们还有另一个值 k,它是可以放在那辆卡车上的最大箱子数。只要箱子的数量不超过k,我们可以选择任何箱子放在卡车上。我们必须找到可以放在卡车上的最大单位总数。

所以,如果输入像 boxTypes = [[2,4],[3,3],[4,2]], k = 6,那么输出将是 19,因为有

  • 2 盒 1 型,每盒包含 4 个单位

  • 3 盒 2 型,每盒包含 3 个单位

  • 4 盒类型 3,每盒包含 2 个单位

当 k = 6 时,我们可以取所有类型 1 和类型 2 的盒子,只有类型 3 的一个盒子,所以会有 (2*4) + (3*3) + 2 = 8 + 9 +2 = 19 个项目.

示例(Python)

让我们看看以下实现以获得更好的理解 -

def solve(boxTypes, k):
   boxTypes.sort(key = lambda x : x[1], reverse = True)
   total = 0
   fill = 0
   for i in boxTypes:
      if fill + i[0] <= k:
         fill += i[0]
         total += i[0] * i[1]
      else:
         total += (k - fill) * i[1]
         break
   return total

boxTypes = [[2,4],[3,3],[4,2]]
k = 6
print(solve(boxTypes, k))

输入

[[2,4],[3,3],[4,2]], 6
输出结果
19