⁢中花勋 2021-12-21 15:15 采纳率: 50%
浏览 38

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

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

  • 写回答

2条回答 默认 最新

  • 於黾 2021-12-21 16:42
    关注
    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) #打印最大的价值
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月21日

悬赏问题

  • ¥15 matlab使用自定义函数时一直报错输入参数过多
  • ¥15 设计一个温度闭环控制系统
  • ¥100 关于加载卡的问题有能知道这个要怎么处理吗?
  • ¥100 rtmpose姿态评估
  • ¥15 java 通过反射找路径下的类,打包后就找不到
  • ¥15 通联支付网上收银统一下单接口
  • ¥15 angular有偿编写,
  • ¥15 centos7系统下abinit安装时make出错
  • ¥15 hbuildex运行微信小程序报错
  • ¥15 关于#python#的问题:我知道这个问题对你们来说肯定so easy