如果您获得以下列表
a = [ 1 2 3 2 1]
加起来为9.我正在寻找小于5的所有可能组合(可配置),最多可加9个。例如:
[5 4] is valid
[3 3 3] is valid
[4 3 2] is valid
等等
[ 1 2 3 2 1]
也有效
此外,它不能大于给定列表(a)的大小 [1 1 1 1 1 1 1 1 1]无效。
我试过(根据我看到的一些评论)
def subset_sum(numbers, target, partial=[], partial_sum=0):
if partial_sum == target:
yield partial
if partial_sum >= target:
return
for i, n in enumerate(numbers):
remaining = numbers[i + 1:]
yield from subset_sum(remaining, target, partial + [n], partial_sum + n)
但我想生成一个列表,如[5 4],不仅使用给定的列表。
答案 0 :(得分:0)
我认为这个版本可以完成工作
set -e
set -o errexit