假设我们有一组表示为称为 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 个项目.
让我们看看以下实现以获得更好的理解 -
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