用python语言实现“子集和数”问题的分支限界算法

用python语言实现“子集和数”问题的分支限界算法,求解答!


def subset_sum(lst, target):
    for i in range(1, 2**len(lst)):
        pick = list(mask(lst, bin(i)[2:]))
        if sum(pick) == target:
            yield pick
def mask(lst, m):
    m = m.zfill(len(lst))
    return map(lambda x: x[0],  filter(lambda x: x[1]!='0',  zip(lst, m)))

lst = [-7, -3, -2, 5, 8]
target = 0
k = subset_sum(lst, target)
print(list(k))

看看https://wk.baidu.com/view/ef9436fe7c192279168884868762caaedd33bae6