我正在尝试运行特定的代码以查找来自.in文件的列表的所有可能组合的总和。当使用相对较小的文件运行时,相同的代码可以完美运行,并且使用较大的文件时会挂起,并在抛出少量错误后出现<import itertools
file = open("c_medium.in","r")
if file.mode=='r':
content = file.readlines()
maxSlices,numberOfPizza = map(int,content[0].split())
numberOfSlices = tuple(map(int,content[1].split()))
print(maxSlices)
print(numberOfSlices)
sol = []
sumOfSlices = []
for x in range(1,len(numberOfSlices)+1):
print(x)
for y in itertools.combinations(numberOfSlices,x):
if sum(y) <= maxSlices:
sumOfSlices.append(sum(y))
sumOfSlices.sort()
print(sumOfSlices)
checkSum = sumOfSlices[len(sumOfSlices)-1]
print(checkSum)
found = False
if found == False:
for x in range(1,len(numberOfSlices)+1):
print(x)
for y in itertools.combinations(numberOfSlices,x):
if found == False:
if sum(y) == checkSum:
for z in y:
sol.append(numberOfSlices.index(z))
found = True
solution = tuple(map(str,sol))
print(solution)
我正在尝试运行特定的代码以查找来自.in文件的列表的所有可能组合的总和。当使用较小的文件运行时,相同的代码可以完美运行...
特别是关于您的代码,如果(sum(y) <= maxSlices
)始终为true,则将生成一个包含2^(numberOfSlices)
元素的列表。也就是说,如果numberOfSlices=32
,您将溢出32位整数。