我有以下一段代码,它找出列表中的任何 4 个组合总和是否可能达到一个值(比如 7)。如果可能,它会打印 1,否则打印 0。它需要:- 列表元素的数量(n),列表(测试)和需要检查的数字(比如 7)(这里是 x)。
每次我在任何在线平台上执行它都会显示“超出时间限制”。我如何将它优化到 0.87 秒以下?如果我在这里使用了“ itertools ”。我做错了什么。
import itertools
t=int(input())
while t!=0:
n=int(input())
test=[int(val) for val in input().strip().split()]
x=int(input())
generator=(itertools.combinations(test,4))
for elem in generator:
val=elem
if sum(val)==x:
flag=1
break
break
if not flag:
print('0')
else:
print('1')
t=t-1