01背包-动态规划

01背包

在这里插入图片描述
在这里插入图片描述

易知状态转移方程为:
dp[i][j] = max(dp[i-1][j],dp[i-1][j-v[i]]+w[i])

代码

N,V = map(int,input().split())
v, w = [0],[0] # 体积v,价值w
for i in range(N):a = list(map(int,input().split()))v.append(a[0]) # 体积viw.append(a[1]) # 价值wi
dp = [[0 for j in range(V+1)] for i in range(N+1)] # 创建二维列表并初始化为0,行为物品数量,列为背包容量for i in range(1,N+1): # 物品数从0到Nfor j in range(1,V+1): # 背包容量从0到Vdp[i][j]=dp[i-1][j] # 先不选if j>=v[i]: # 当背包容量大于某个物品体积时选择价值大的那个dp[i][j] = max(dp[i-1][j],dp[i-1][j-v[i]]+w[i])
print(dp[-1][-1])

从状态转移方程看,可以将二维数组dp优化为一维,每次更新第i行的状态值

代码

N,V = map(int,input().split())
v, w = [0],[0] # 体积v,价值w
for i in range(N):a = list(map(int,input().split()))v.append(a[0]) # 体积viw.append(a[1]) # 价值widp =[0 for i in range(V+1)] # 创建一维列表并初始化为0for i in range(1,N+1):for j in range(V,v[i]-1,-1):dp[j]= max(dp[j],dp[j-v[i]]+w[i])
print(dp[-1])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/571900.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPIO端口的BSRR的使用

BSRR 只写寄存器 既能控制管脚为高电平,也能控制管脚为低电平。对寄存器高 16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管脚为高电平。写 0 ,无动作 首先看GPIOC的定义 接着看这个类型的定义 可以看到BSRR为无符号的32位的整形 接下来看GPIO_Pi…

CD盘里的cda文件如何拷取成mp3?

CDA并非一种独立的音频文件格式,而是指存储在音乐CD上的音轨文件。这种格式的起源可以追溯到CD制造商对一种在CD播放器上直接播放音轨的需求,而不是在计算机上存储音频文件。因此,CDA通常存在于音乐CD中,为提供一种便捷的音频存储…

Unity 背包系统中拖拽物体到指定位置或互换位置效果的实现

在Unity中,背包系统是一种常见的游戏系统,可以用于管理和展示玩家所持有的物品、道具或装备。 其中的拖拽功能非常有意思,具体功能就是玩家可以通过拖拽物品图标来移动物品在背包中的位置,或者将物品拖拽到其他位置或界面中&…

五分钟,零基础也能入门 Python 图像文字识别

一. 前言 最近在研究 Python 的一些功能 , 也尝试了一些有趣实现, 这一篇就从实践的角度来研究一下 Python 如何实现图片识别。 众所周知 , Python 的库真的老多了,其中在图像识别上比较突出的就是 OpenCV. 那么基于这个库我们…

前缀和算法(1)

一维前缀和[模板] 一、题目描述 OJ题目链接&#xff1a;【模板】前缀和_牛客题霸_牛客网 二、思路解析 三、代码 #include <iostream> using namespace std; const int N 100010; long long arr[N], dp[N]; int n, q; int main() {cin >> n >> q;// 读取…

Spring Data Elasticsearch 与ES版本对应关系记录

参考&#xff1a; Versions :: Spring Data Elasticsearch

0基础 三个月掌握C语言(15)

动态内存管理 为什么要有动态内存分配 我们已经掌握的内存开辟⽅式有&#xff1a; int val 20; //在栈空间上开辟四个字节 char arr[10] {0}; //在栈空间上开辟10个字节的连续空间 但上述的开辟空间的⽅式有两个特点&#xff1a; • 空间开辟⼤⼩是固定的。 • 数组…

让AI给你写代码(七)- 结合语意匹配,引导AI小助手逐步完善代码,新增功能(下)案例说明

结合上一篇 让AI给你写代码&#xff08;六&#xff09;- 结合语意匹配&#xff0c;引导AI小助手逐步完善代码&#xff0c;新增功能&#xff08;上&#xff09; 我们看一个实际的通过提示引导小助手逐步集成构建代码的实例 例子很简单&#xff1a; 获得指定股票最近一定时间的&a…

GNU Radio之OFDM Carrier Allocator底层C++实现

文章目录 前言一、OFDM Carrier Allocator 简介二、底层 C 实现1、make 函数2、ofdm_carrier_allocator_cvc_impl 函数3、calculate_output_stream_length 函数4、work 函数5、~ofdm_carrier_allocator_cvc_impl 函数 三、OFDM 数据格式 前言 OFDM Carrier Allocator 是 OFDM …

Docker进阶:Docker Swarm —弹性伸缩调整服务的副本数量

Docker进阶&#xff1a;Docker Swarm —弹性伸缩调整服务的副本数量 1、 创建一个Nginx服务&#xff08;Manager节点&#xff09;2、查看服务状态&#xff08;Manager节点&#xff09;3、测试访问&#xff08;Worker节点&#xff09;4、查看服务日志&#xff08;Manager节点&am…

mysql 高阶语句 与视图

目录 一 前言 二 msql 高阶语句使用方法 &#xff08;一&#xff09; 查询并排序&#xff08;order by&#xff09; 1&#xff0c;排序方式 2&#xff0c;查询指定列 并排序 3, 条件判断&#xff08;过滤指定行&#xff09; 再查询指定列 并排序 4&#xff0c;查…

IDEA的Scala环境搭建

目录 前言 Scala的概述 Scala环境的搭建 一、配置Windows的JAVA环境 二、配置Windows的Scala环境 编写一个Scala程序 前言 学习Scala最好先掌握Java基础及高级部分知识&#xff0c;文章正文中会提到Scala与Java的联系&#xff0c;简单来讲Scala好比是Java的加强版&#x…