01背包问题中两个背包的解法

问题描述大致如下:

给你n个物品,两个背包,如何装包可以使得两个背包得到的价值是最大的?

一个简化问题:来自微软的笔试题。

 

 题目大意:有两条生产线,一条可以工作x小时,一条工作y小时。一个数组表示每种汽车生产需要多久。要求最多生产多少种汽车。

解析:这里物品的价值都为1了

具体代码如下(包括01背包双背包问题的板子【python】)

# 双背包问题的板子
# dp[i][j][k]表示第i件物品 第一个背包容量j 第二个背包容量k 所能得到的最大价值
# 三种状态转移 1、不装  2、装第一个背包  3、装第二个背包
# 记得01背包状态压缩 第一维可以从后向前 不需要


v = list(map(int, input().split()))
# v = [6, 5, 5, 4, 3]
n = len(v)
v = [0] + v

# 每个背包物品价值,这里其实都是1
# w1=list(map(int,input().split()))
# w1 = [1, 1, 1, 1, 1]
# w1=[0]+w1

# w2=list(map(int,input().split()))
# w2 = [1, 1, 1, 1, 1]
# w2=[0]+w2

# 背包容量
c1, c2 = map(int, input().split())
# c1 = 8
# c2 = 9

# 背包容量
dp = [[0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值