我有一堆货物,重量分别为 : 6,6,5,5,5,4,4,4,4,2,2,2,2,3,3,7,7,5,5,8,8,4,4,5 我需要把这些货物,装入最大重量为 9 的箱子里面(重量之和小于等于 9 的货物可以装到一 个箱子里面)。请问,我最少需要多少箱子,才能把这些货物完全装入进去?
thing = [6, 6, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 2, 3, 3, 7, 7, 5, 5, 8, 8, 4, 4, 5]
target = 9
def match(things, sum):
global x # x为装箱数
x = 0
for i in range(len(things)):
for j in range(i + 1, len(things)):
if things[i] + things[j] == sum:
print([things[i], things[j]])
things[i] = 9
things[j] = 9
x = x + 1
for i in range(len(things)):
for j in range(i + 1, len(things)):
if things[i] + things[j] < sum:
print((things[i], things[j]))
things[i] = 9
things[j] = 9
x = x + 1
for i in range(len(things)):
if things[i] < sum:
print({things[i]})
x = x + 1
print("共要装%d箱" % x)
if __name__ == '__main__':
match(thing, target)
当货物被统计一次后就被赋值为9,之后就不会被重复统计。