我有一个最多1000个整数的列表,我希望整数值最接近1000,表示列表中任何可能的整数组合的总和。
对于[900,500,498,4,8,10,600]
,预期结果为1002,因为500 + 498 + 4 = 1002。
答案 0 :(得分:1)
我假设500 + 498 = 998与你的例子1002的答案一样有效,因为这两个数字都接近1000而你错过了。如果您有两种可能的解决方案,那么如果您寻找最大值,那么这很容易解决。
from itertools import combinations, chain
lst = [900, 500, 498, 4, 8, 10, 600]
c = chain(*(list(combinations(lst, i)) for i in range(1, len(lst) + 1)))
result = min(c, key = lambda x: abs(sum(x) - 1000))
print(sum(result)) # 998