【发布时间】:2021-03-22 14:24:47
【问题描述】:
最近,我插入了一个代码:
def subset_sum(numbers, target, partial=[]):
s = sum(partial)
# check if the partial sum is equals to target
if s == target:
print(partial, target)
if s >= target:
return # if we reach the number why bother to continue
for i in range(len(numbers)):
n = numbers[i]
remaining = numbers[i+1:]
subset_sum(remaining, target, partial + [n])
if __name__ == "__main__":
subset_sum([1, 2, 3] + [1, 2, 3], 5)
目标是获得列出的所有数字组合,这些组合可以加在一起以满足所需的总和。比如我有两个列表[1,2,3]和[2,3,4],目标是得到这些数字的所有等于3的组合。答案应该是[1,2]等等..
但问题是我需要 Python 从每个列表中只选择一个元素,而不是更多。我该如何解决这个问题?
非常感谢!
【问题讨论】:
-
从列表中创建集合并在其中一个集合上迭代,并在集合 2 中查找 sum 的差异和来自 set1 的数字。
标签: python numbers combinations