子集总和算法。打印True或False以及所有等于给定总和的可能子集

时间:2020-10-04 20:06:51

标签: python

这是我的代码,我想要所需的输出,但只需获取输出...。请帮帮我!! https://github.com/amitsgh/Algorithm/commit/37529df890a23dae154cbd0e69e0de82e1f2d412

输出: 真正 [8,2]

所需的输出: 真正 [8,2],[6,4]

1 个答案:

答案 0 :(得分:0)

您的代码不必要地复杂,并且您无需递归即可完成此任务。这是一种获取所需内容的非常简单的方法:

def subset_sum(sum, values):
     result = []
     for i in range(len(values)):
          for j in range(i + 1, len(values)):
               if values[i] + values[j] == sum:
                    result.append((values[i], values[j]))
     return result

r = subset_sum(10, [2, 6, 4, 8])

print("{} {}".format("True" if len(r) > 0 else "False", r))

结果:

True [(2, 8), (6, 4)]

您没有说应该决定打印True还是False的内容。我以为是至少找到一对值加起来等于所提供的总和。