问题描述
def printPossibleSubsets(arr,i,inSum,pList,table):
if i == 0 and inSum != 0 and table[0][inSum]:
pList.append(arr[i])
print(pList)
pList = []
return
if i == 0 and inSum == 0:
print(pList)
pList = []
return
if table[i-1][inSum]:
bList = []
bList.extend(pList)
printPossibleSubsets(arr,i-1,bList,table)
if inSum >= arr[i] and table[i-1][inSum-arr[i]]:
pList.append(arr[i])
printPossibleSubsets(arr,inSum-arr[i],table)
def subsetSum(arr,n,inSum):
if n == 0 or inSum < 0:
return
table = [[False for x in range(inSum+1)] for y in range(n)]
for i in range(0,n):
table[i][0] = True
if arr[0] <= inSum:
table[0][arr[0]] = True
for i in range(1,n):
for j in range(0,inSum+1):
if arr[i] <= j:
table[i][j] = table[i-1][j] or table[i-1][j-arr[i]]
else:
table[i][j] = table[i-1][j]
if table[n-1][inSum] == False:
print(f"There is no subset with {inSum}")
return
pList = []
printPossibleSubsets(arr,n-1,table)
if __name__ == "__main__":
arr = [2,3,-5,-8,6,-1]
inSum = 0
subsetSum(arr,len(arr),inSum)
- 我之前尝试过使用数组元素的(最小和最大)总和值更改
j
边界,但没有奏效。 - 有没有办法处理负数 sum 并根据所需的总和正确给出 sum 的子集?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)