问题是这样的:
有一个行李箱
给出最多能装_多少kg__的限制(w_limit)
,又给了一个货物利润的array1和对应货物重量的array2
,要求output利润的最大值
然后这是我写的代码
def subset(S,sub,array1,array2,n,d):
m=0
if len(S) == 0:
pft_sum=0
wgt_sum=0
for i in sub:
pft_sum += array1[i]
wgt_sum += array2[i]
if wgt_sum <= n:
if pft_sum > m:
m = pft_sum
return
subset(S[1:],sub,array1,array2,n,d)
subset(S[1:],sub+[S[0]],array1,array2,n,d)
return m
w_limit=25
wgt=[2, 8, 5, 6, 15, 3, 7]
pft=[30, 100, 10, 120, 280, 50, 40]
S=[]
for i in range(len(wgt)):
S.append(i)
d=subset(S,[],pft,wgt,w_limit,[])
print(d)
但是这样子算出来的d一直是0,是因为输出的m每一个回溯都会=0一下吗
求解!