用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