0-1背包-动态规划

news2024/11/25 0:35:53

一、01背包

描述:有 N 件物品和一个容量为 V 的背包,每件物品只能使用一次

           第 i 件物品的体积是 Ci,价值是 Wi

           求解将哪些物品装入背包,能够在不超过背包容量的情况下使总价值最大

求解:动态规划

使用dp[i][j]表示从前 i 个物品中挑选,总体积不超过 j 的最大价值;则具有两种情况:

第一种情况:不选择第 i 个物品,那么此时的最大价值可以转化为:只放前 i - 1 件物品到容量为 j 的背包中的最大价值,故有:

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        dp[i][j] = dp[i - 1][j]

第二种情况:选第 i 个物品,那么此时的最大价值可以转化为:将前 i - 1 件物品放到容量为j  - c[i]的背包中,加上此时得到的价值 Wi,故有:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        dp[i][j] = dp[i - 1][j - c[i]] + w[i]

最终结果取二者的较大值即可:

        ​​​​​​​        ​​​​​​​        dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - c[i]] + w[i])

代码实现:

//N为物品数量, V为背包容量,c[i]为第 i 件物品的体积,w[i]为第 i 件物品的价值
public int knapsack(int N, int V, int[] c, int[] w){
    int[] [] dp = new int[N + 1][V + 1];
    //枚举物品
    for(int i = 1; i <= N; i++){
        //枚举体积
        for(int j = 1; j <= V; j++){
            //两种情况
            dp[i][j] = dp[i - 1][j];
            if(j >= c[i]){
                dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - c[i]] + w[i]);
            }
        }
    }
    return dp[N][V];
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

zabbix监控H3C设备

背景 常见的服务和主机已经使用Prometheus进行监控了&#xff0c;但是网络设备还未配置监控。使用基于SNMP对网络设备进行监控。 设备概览 主要类型为H3C的路由器和交换机。H3CS5560交换机 路由器MER5200 er8300 步骤 配置网络设备开启telnet远程&#xff1b; 配置启用sn…

nodejs采集淘宝、天猫网商品详情数据以及解决_m_h5_tk令牌及sign签名验证(2023-09-09)

一、淘宝、天猫sign加密算法 淘宝、天猫对于h5的访问采用了和APP客户端不同的方式&#xff0c;由于在h5的js代码中保存appsercret具有较高的风险&#xff0c;mtop采用了随机分配令牌的方式&#xff0c;为每个访问端分配一个token&#xff0c;保存在用户的cookie中&#xff0c;通…

SAP-MM-销售订单库存转移到普通库存

业务需求&#xff1a; 特殊库存-销售订单库存 有产成品物料1个&#xff0c;现在需要在集团下的两个公司间调拨&#xff0c;需要把特殊库存E调拨到普通库存里&#xff0c;再从H020普通库存调拨到另一个工厂1000. 注意事项&#xff1a;库存地点需要扩充&#xff0c;否则调拨会报…

iOS 17新功能:教你轻松掌握锁定屏幕快捷方式

通过iOS 17&#xff0c;苹果为iPhone用户提供了使用快捷方式锁定手机屏幕的能力。 为什么你需要学习如何使用iOS锁定屏幕快捷方式&#xff1f;按下iPhone上的电源按钮激活这个屏幕肯定是最简单的吗&#xff1f;嗯&#xff0c;这并不总是正确的。如果你在按下物理按钮时遇到困难…

【2023知乎爬虫】批量获取问题的全部回答

一.需求 爬取任意问题下的所有回答&#xff0c;如下图&#xff1a; 1.根据问题&#xff0c;批量获取问题下的所有回答、与对应问题的关系到answer.csv文件&#xff1b; 2.保存当前问题基本信息到quesiton_info.csv文件&#xff1b; 二.展示爬取结果 三.讲解步骤 3.1 新建项…

个人开发者看过来,我搭了一个监控系统免费用

最近在做一个自己的项目&#xff0c;平时就在自己电脑上跑着&#xff0c;有一天回去突然就挂了&#xff0c;查了半天也没搞清楚原因&#xff0c;想看个监控都没有&#xff0c;什么时候挂的&#xff0c;为啥挂了&#xff0c;统统都不知道。平时做公司项目多了&#xff0c;监控用…

C/C++操作加密与不加密的zip文件

为了后续的方便操作zip文件&#xff0c; 将所有的操作封装成了一个动态库了。 /*** \description 从压缩包文件中解压出指定的文件到指定的目录.* \author sunsz* \date 2023/09/09**/ LIBZIP_API int UnpackFile(const char* password, char zipfilename[], char filename_…

rt-thread------任务调度

rt-thread------任务调度 1. 线程初始化 在rt-thread中线程主要包括以下一些内容&#xff0c;线程控制块、线程栈、函数入口。 1.1线程创建函数 RTOS基本都包括两种线程方式&#xff1a;动态创建rt_thread_create()和静态创建rt_thread_init()。 因为有些系统设计时对安全…

硬件学习件Cadence day13 PCB设计中一些设置, 铜皮到钻孔的距离设置, 差分线的设置,板层信息表

1. 设置铺铜中铜皮到钻口&#xff0c;连线的距离。 1. 打开设置界面 2. 设计界面 调整到 铜皮设置界面 2. 高速线的设置 &#xff08;差分对传输线的设置&#xff09; 1. 打开设置界面 2. 来到 差分线设置界面 3. 把界面往右看&#xff0c; 设置差分线的之间距离&#xff0c;…

Python之并发编程介绍

一、并发编程介绍 1.1、串行、并行与并发的区别 串行(serial)&#xff1a;一个CPU上&#xff0c;按顺序完成多个任务并行(parallelism)&#xff1a;指的是任务数小于等于cpu核数&#xff0c;即任务真的是一起执行的并发(concurrency)&#xff1a;一个CPU采用时间片管理方式&am…

TrOCR – 基于 Transformer 的 OCR 入门指南

多年来,光学字符识别 (OCR) 出现了多项创新。它对零售、医疗保健、银行和许多其他行业的影响是巨大的。尽管有着悠久的历史和多种最先进的模型,研究人员仍在不断创新。与深度学习的许多其他领域一样,OCR 也看到了变压器神经网络的重要性和影响。如今,我们拥有像TrOCR(Tran…

franka_ros中的一些子包的使用

franka_visualization包 该软件包包含连接到机器人并发布机器人和夹爪关节状态以在 RViz 中进行可视化的发布者。要运行此包启动&#xff1a; roslaunch franka_visualization franka_visualization.launch robot_ip:<fci-ip> \load_gripper:<true|false> 比如&a…

UI自动化测试工具详解

常用工具 1、QTP&#xff1a;商业化的功能测试工具&#xff0c;收费&#xff0c;可用于web自动化测试 2、Robot Framework&#xff1a;基于Python可扩展的关键字驱动的测试自动化框架 3、Selenium &#xff1a;开源的web自动化测试工具&#xff0c;免费&#xff0c;主要用于功…

SpringCloud-微服务CAP原则

接上文 SpringCloud-Config配置中心 到此部分即微服务的入门。 总的来说&#xff0c;数据存放的节点数越多&#xff0c;分区容忍性就越高&#xff0c;但要复制更新的次数就越多&#xff0c;一致性就越难保证。同时为了保证一致性&#xff0c;更新所有节点数据所需要的时间就…

Python教程33:关于在使用zipfile模块,出现中文乱码的解决办法

zipfile是Python标准库中的一个模块&#xff0c;zipfile里有两个class, 分别是ZipFile和ZipInfo&#xff0c;用来创建和读取zip文件&#xff0c;而ZipInfo是存储的zip文件的每个文件的信息的。ZIP文件是一种常见的存档文件格式&#xff0c;它可以将多个文件和目录压缩为一个文件…

帝国cms后台访问链接提示“非法来源”解决方法

提示“非法来源”的原因 帝国CMS更新升级7.2后,新增了后台安全模式,后台推出了金刚模式来验证链接来源。后台所有链接都需要登录后才能访问,直接强制访问后台页面链接都会提示“非法来源”。不是正常登录后台的用户无法直接访问到内容,保证了后台数据安全。 那么我们在日常…

Table of Laplace Transforms

https://www.math.uh.edu/~etgen/LaplaceT.pdf http://web.mit.edu/2.737/www/handouts/LaplaceTransforms.pdf https://www.integral-table.com/downloads/LaplaceTable.pdf https://www.math.purdue.edu/~caiz/MA527-cai/lectures/Table%20of%20Laplace%20Transforms.pdf

阅读源码工具Sourcetrail

收费工具Source Insight、Understand Sourcetrail开源工具 一、下载安装 接下来就是download&#xff0c;在GitHub的release页面选择自己系统对应的发布版本下载安装&#xff1a; 安装好后&#xff0c;运行程序&#xff0c;会出现这样的界面&#xff1a; 二、应用 选择“New…

2023年最佳研发管理平台评选:哪家表现出色?

“研发管理平台哪家好&#xff1f;以下是一些知名的研发管理软件品牌&#xff1a;Zoho Projects、JIRA、Trello、Microsoft Teams、GitLab。’” 企业需要不断创新以保持竞争力。研发是企业创新的核心&#xff0c;而研发管理平台则为企业提供了一个有效的工具来支持和管理其研发…

SpringMvc第四战-【SpringMvc文件上传,下载】

目录 一.SpringMvc文件上传 1.导入依赖&#xff08;在pom.xml中&#xff09; 2.配置文件上传解析器&#xff08;在spring-mvc.xml中&#xff09; 3.前端标记多功能表单&#xff08;构建一个jsp界面来操作&#xff09; 4.将文件写出流&#xff0c;然后写入服务器 5.配置映…