关于#python#的问题:求背包中放入的总价值最大

现有一个背包里有物品{1,2,3,4,5},重量分别是{2,6,5,4,3},价值分别为{3,4,2,7,1},背包最大重量为12,求背包中放入的总价值最大

import itertools #python内置函数,用于list取排列组合
a=[0,1,2,3,4] #这里存的是index,一会用来排列组合
b=[2,6,5,4,3] #重量
c=[3,4,2,7,1] #价格
maxprice=0 #用来存最高价值
for i in range(1,6): #分别从背包里取1个、2个。。。一直到5d=itertools.combinations(a,r=i) #不放回的组合,一次取i个,它本身是个集合,所以一会要遍历一下
    for e in d: #取出集合里每种组合
        f=[b[j] for j in e] #把随机index重新转换成重量
        g=[c[j] for j in e] #根据index重新转回价值
        if sum(f)<=12 and sum(g)>maxprice: #如果总重量小于12并且总价值大于max
            maxprice=sum(g) #重新赋值
            print(f) #调试用,用来打印出目前最大价值的组合,也可以另建变量来存这个组合
    print(maxprice) #打印最大的价值

这篇文章,应该能解决了的问题。
https://blog.csdn.net/weixin_44808082/article/details/108985474