Python中的回溯子集总和

问题描述 投票:0回答:1
def print_subset(x):
    print([A[i] for i in range(len(x)) if x[i]])

def subset_sum(k):
    v_sum = ##sum of whole results I chose##
    if k == len(A):
        if v_sum == S:
            print_subset(x)
    else:
        # code for x[k] = 1 and x[k] = 0

A = list(set(int(x) for x in input().split()))
A.sort()
S = int(input()) 
x = [0]*len(A)
subset_sum(0)

我正在尝试制作子集总和代码,但现在我陷入了困境。我知道我要做的是将x[k]=1 and x[k]=0的情况分开。

但是我找不到解决方法。我应该怎么做才能填写代码?

python backtracking
1个回答
0
投票

我不确定答案,但是我建议使用所有长度为“ len(A)”的二进制数(例如Incrementing a binary number in python)过滤您的集合,以创建所有子集。

© www.soinside.com 2019 - 2024. All rights reserved.