2

我有以下一段代码,它找出列表中的任何 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
4

0 回答 0