当前位置: 首页 > news >正文

【算法|动态规划No.31 | 01背包问题】01背包模板题

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【手撕算法系列专栏】【LeetCode】
🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
🍓希望我们一起努力、成长,共同进步。
在这里插入图片描述

原题链接:点击直接跳转到该题目

目录

  • 1️⃣题目描述
  • 2️⃣题目解析
  • 3️⃣解题代码

1️⃣题目描述

有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。

第 i 件物品的体积是 vi,价值是 wi。

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。

在这里插入图片描述

2️⃣题目解析

状态表示:

  • dp[i][j] 表示从前i个物品中进行挑选,体积不超过j的情况下的最大价值。

状态转移方程:

  • dp[i][j] = max(dp[i - 1][j],dp[i - 1][j - v[i] + w[i])

注意:这里dp[i - 1][j]的情况是一定存在的;而dp[i - 1][j - V[i]] + W[i]的情况只有在j >= V[i]时才会存在。

空间优化:注意填dp表时需要从右往左填。

3️⃣解题代码

解法1(朴素算法:二维dp)

#include<iostream>
#include<algorithm>
using namespace std;const int N = 1010;
int V[N],W[N],dp[N][N];int main()
{int n,v;cin >> n >> v;for(int i = 1;i <= n;i++) cin >> V[i] >> W[i];for(int i = 1;i <= n;i++){for(int j = 1;j <= v;j++){dp[i][j] = dp[i - 1][j];if(j - V[i] >= 0) dp[i][j] = max(dp[i][j],dp[i - 1][j - V[i]] + W[i]);}}cout << dp[n][v] << endl;return 0;
}

解法2(滚动数组空间优化):

#include<iostream>
#include<algorithm>
using namespace std;const int N = 1010;
int V[N],W[N],dp[N];int main()
{int n,v;cin >> n >> v;for(int i = 1;i <= n;i++) cin >> V[i] >> W[i];for(int i = 1;i <= n;i++)for(int j = v;j - V[i] >= 0;j--)dp[j] = max(dp[j],dp[j - V[i]] + W[i]);cout << dp[v] << endl;return 0;
}

相关文章:

【算法|动态规划No.31 | 01背包问题】01背包模板题

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…...

Azure - 机器学习:使用 Apache Spark 进行交互式数据整理

目录 本文内容先决条件使用 Apache Spark 进行交互式数据整理Azure 机器学习笔记本中的无服务器 Spark 计算从 Azure Data Lake Storage (ADLS) Gen 2 导入和整理数据从 Azure Blob 存储导入和处理数据从 Azure 机器学习数据存储导入和整理数据 关注TechLead&#xff0c;分享AI…...

4.5 final修饰符

在Java中&#xff0c;final修饰符可以修饰类、属性和方法&#xff0c;final有“最终”、“不可更改”的含义&#xff0c;所以在使用final关键字时需要注意以下几点&#xff1a; 使用final修饰类&#xff0c;则该类就为最终类&#xff0c;最终类不能被继承。 使用final修饰方法…...

Clickhouse数据库部署、Python3压测实践

Clickhouse数据库部署、Python3压测实践 一、Clickhouse数据库部署 版本&#xff1a;yandex/clickhouse-server:latest 部署方式&#xff1a;docker 内容 version: "3"services:clickhouse:image: yandex/clickhouse-server:latestcontainer_name: clickhouse …...

探索控制领域:从电视遥控器到自动驾驶【基础概念理解、应用实例】

当谈到控制学和控制系统时&#xff0c;你可能会联想到电视遥控器、自动驾驶汽车、飞机自动驾驶系统以及许多其他自动化系统。但控制学是一个更广泛的学科&#xff0c;它涵盖了各种领域&#xff0c;从工程到生物学&#xff0c;从经济学到环境科学。让我们深入了解控制学的基本概…...

在R中安装CmdStanR的步骤-R4.3.1-CmdStanR-0.6.1.900

报错未安装cmdstanr 安装包官网详细介绍&#xff1a; R Interface to CmdStan • cmdstanrhttps://mc-stan.org/cmdstanr/ 以下是在R中安装CmdStanR的步骤&#xff1a; 1. 首先&#xff0c;需要下载和安装C编译器 例如gcc。如果您已经安装了C编译器&#xff0c;则可以跳过此…...

安信可小安派AiPi 代码下载

安信可小安派AiPi 代码下载笔记记录 AiPi 代码下载&#xff08;直接使用命令行操作&#xff0c;仅需要Type-C接口线即可&#xff09; 在完成环境搭建&#xff0c;和代码编写前提下&#xff0c;使用Type-C接口线下载代码&#xff0c;当然可以自己使用usb-ttl串口线下载程序&am…...

程序化交易(二)level2行情数据源接入

WEBSOCKET行情接入 行情在线测试 websocket行情接口 交易在线测试 在线交易接口 官方文档地址 行情交易接口用户文档 分配服务器 注意&#xff1a;每次分配的服务器地址会发生变化&#xff0c;连接服务前&#xff0c;请务必调用该接口获取最新的服务器地址。 获取服务器:…...

4.6 static修饰符

static是一个修饰符&#xff0c;用于修饰类的成员属性和成员方法&#xff0c;还可以编写static代码块来优化程序性能。 1. static修饰属性 在Java程序中使用static修饰属性&#xff0c;则该属性称为静态属性&#xff08;也称全局属性&#xff09;&#xff0c;静态属性可以使用…...

C++头文件定义变量

1.在进行头文件学习时&#xff0c;犯了不少错误&#xff0c;记录一下&#xff0c;先贴代码. .h头文件 #ifndef MY_FIRST_H_ #define MY_FIRST_H_struct Person {std::string name;int age;char8_t gender; };//需要使用extern来声明,否则在多个文件中引入该头文件会出现重定义…...

[蓝桥杯-610]分数

题面 解答 这一题如果不知道数论结论的话&#xff0c;做这个题会有两种天壤之别的体验 此题包含以下两个数论知识 1. 2^02^12^2...2^(n-1)2^n-1 2. 较大的数如果比较小的数的两倍大1或者小1&#xff0c;则两者互质 所以答案就是2^n-1/2^(n-1) 标程1 我的初次解答 #in…...

Vue指令大全:深入探索Vue提供的强大指令功能

目录 v-bind指令 v-on指令 v-if和v-show指令 v-for指令 自定义指令 其他常用指令 总结 Vue.js是一款流行的JavaScript框架&#xff0c;具备丰富的指令系统。Vue指令允许开发者直接在模板中添加特殊属性&#xff0c;以实现DOM操作、事件绑定、样式控制等功能。在本文中&a…...

x210项目重新回顾之十七升级到linux4.19.114 +buildroot2018再讨论

代码参考https://github.com/colourfate/x210_bsp/ 他的是linux_4.10(dtb为 s5pv210-x210..dtb)我打算用linux4.19.114(dtb为 s5pv210-smdkv210.dtb) &#xff0c;所以修改build.sh ------------------------------------------------------------------------------ 5 M…...

shell_56.Linux永久重定向

永久重定向 1.脚本中有大量数据需要重定向&#xff0c;那么逐条重定向所有的 echo 语句会很烦琐。 这时可以用 exec 命令&#xff0c;它会告诉 shell 在脚本执行期间重定向某个特定文件描述符&#xff1a; $ cat test10 #!/bin/bash # redirecting all output to a file ex…...

CN考研真题知识点二轮归纳(1)

本轮开始更新真题中涉及过的知识点&#xff0c;总共不到20年的真题&#xff0c;大致会出5-10期&#xff0c;尽可能详细的讲解并罗列不重复的知识点~ 目录 1.三类IP地址网络号的取值范围 2.Socket的内容 3.邮件系统中向服务器获取邮件所用到的协议 4.RIP 5.DNS 6.CSMA/CD…...

hadoop使用简介

git clone hadoop源码地址&#xff1a;https://gitee.com/CHNnoodle/hadoop.git git clone错误&#xff1a; Filename too long错误&#xff0c;使用git config --global core.longpaths true git clone https://gitee.com/CHNnoodle/hadoop.git -b rel/release-3.2.2 拉取指定…...

WebSocketClient objects are not reuseable

好久没写东西&#xff0c;夜深了来冒个泡&#xff0c;先啰嗦几句。今天测试 Android App 的时候&#xff0c;发现推到后台不到一分钟再唤醒直接闪退&#xff0c;初次以为网络和GPS信号弱导致的&#xff08;当时是在地铁上进行的测试&#xff09;&#xff0c;之后在网络与GPS 信…...

分享54个ASP.NET源码总有一个是你想要的

分享54个ASP.NET源码总有一个是你想要的 链接&#xff1a;https://pan.baidu.com/s/1khPzxtOFP0wUHpg7TBDitg?pwd8888 提取码&#xff1a;8888 项目名称 (ASP.Net)基于三层架构的企业信息管理系统 asp .net mvc编写的房产管理系统 asp.net core mvc 病人管理后台 asp.ne…...

闭包通俗解释,Demo(Go Java Python)

闭包的概念 想象一下&#xff0c;你有一个包裹着变量的函数&#xff0c;就像是一个封闭的包裹。这个包裹里有一个变量&#xff0c;而这个函数&#xff08;或包裹&#xff09;本身就是一个完整的单元。当你把这个函数传递给其他地方&#xff0c;就像是把这个包裹传递出去。 这…...

Linux部署Redis Cluster高可用集群(附带集群节点添加删除以及槽位分配操作详解)

目录 一、前言二、下载安装Redis2.1、选择需要安装的Redis版本2.2、下载并解压Redis2.3、编译安装Redis 三、部署Redis Cluster高可用集群3.1、准备配置文件3.2、启动Redis服务3.3、创建Redis集群3.4、查看集群关系3.5、连接集群Redis进行数据读写以及重定向测试3.6、故障转移和…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...