TJJJJJJJJJJ
2020-10-10 17:33
采纳率: 60%
浏览 135
已采纳

小白搞不懂回溯啊 求大佬指教

问题是这样的:
有一个行李箱
给出最多能装_多少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一下吗
求解!

2条回答 默认 最新

相关推荐 更多相似问题