题解 | 【模板】01背包 Python3

【模板】01背包

https://www.nowcoder.com/practice/fd55637d3f24484e96dad9e992d3f62e

import sys
# 0/1背包
# 动态规划,dp1[i][j]为考虑到第i个物品,容量为j的背包的最大价值,不考虑背包是否装满
# dp2[i][j] 考虑装满的情况下
# dp[i][j] = max(dp[i][j-v]+w,dp[i-1][j])
# dp1 和 dp2主要是初始化条件不同和一些遍历逻辑
# dp2要考虑到完全背包,比如主要结果dp2[i][j]是表示考虑到所有所有物品后完全背包的最大价值
# 那么 dp2[i][j] = max(dp2[i][j-v]+w,dp2[i-1][j]), 但是可能dp2[i][j-v]并没有一个完全背包解,因此需要有一个值来表征,用一个很小的值

min_w = - 1000 * 1000 - 1

n, V = list(map(int, input().strip().split()))

data = []

for i in range(n):
    v, w = list(map(int, input().strip().split()))
    data.append([v,w])

dp1 = [[0]*(V+1) for _ in range(n+1)]
dp2 = [[min_w]*(V+1) for _ in range(n+1)]
for i in range(n+1):
    dp2[i][0] = 0
# dp2以min_w初始化表征不可达状态,只有dp2[i][0]为0,表示体积完全占用

# 因为只和当前行计算只和上一行有关系,其实一维dp也行

for i in range(1,n+1):
    v, w = data[i-1]
    for j in range(1,V+1):
        if j < v:
            dp1[i][j] = dp1[i-1][j]
        else:
            dp1[i][j] = max(dp1[i-1][j-v]+w, dp1[i-1][j])



for i in range(1,n+1):
    v, w = data[i-1]
    for j in range(1,V+1):
        if j < v:
            dp2[i][j] = dp2[i-1][j]
        else:
            dp2[i][j] = max(dp2[i-1][j-v]+w, dp2[i-1][j])

print(dp1[-1][-1])
print(dp2[-1][-1] if dp2[-1][-1]>=1 else 0)

全部评论

相关推荐

03-01 21:45
中北大学 golang
孤蓝长空:请你说一下为什么你用websocket而不是http,请你说一下什么是rpc,为什么用rpc,你的rpc的传输协议是JSON,xml还是什么 请你描述一下你的鉴权流程(完整的) 我问的是第二个项目,随便问的哈哈哈
开工第一帖
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# AI面会问哪些问题? #
24202次浏览 477人参与
# 中国电信笔试 #
30872次浏览 283人参与
# 厦门银行科技岗值不值得投 #
7390次浏览 185人参与
# 你的实习产出是真实的还是包装的? #
18506次浏览 329人参与
# 如果秋招能重来,我会____ #
96439次浏览 499人参与
# 春招至今,你的战绩如何? #
59052次浏览 535人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
13962次浏览 208人参与
# i人适合做什么工作 #
36637次浏览 123人参与
# 我是面试官,请用一句话让我破防 #
79275次浏览 219人参与
# 哪些公司真双非友好? #
69114次浏览 287人参与
# 找AI工作可以去哪些公司? #
7433次浏览 177人参与
# 从事AI岗需要掌握哪些技术栈? #
7415次浏览 234人参与
# 五一之后,实习真的很难找吗? #
102788次浏览 584人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
339675次浏览 2163人参与
# 你做过最难的笔试是哪家公司 #
29371次浏览 179人参与
# 你小时候最想从事什么职业 #
159811次浏览 2072人参与
# 阿里笔试 #
175887次浏览 1299人参与
# 金三银四,你的春招进行到哪个阶段了? #
21364次浏览 274人参与
# 一张图晒出你司的标语 #
3775次浏览 71人参与
# 面试被问期望薪资时该如何回答 #
382420次浏览 2163人参与
# 晶盛机电求职进展汇总 #
35209次浏览 318人参与
# 应届生第一份工资要多少合适 #
20404次浏览 84人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务