算法之背包问题

   可分的背包问题是可以用贪心法来解决,而0-1背包问题通常使用动态规划方法来解决。

可分背包问题
       在可分背包问题中,物品可以被分割,您可以取走物品的一部分以适应背包的容量。这里的关键是物品的价值密度,即单位重量的价值。您可以按照价值密度从高到低的顺序选择物品,先取价值密度最高的物品,然后是次高的,依此类推,直到背包装满为止。这种方法称为贪心算法,因为它每一步都选择当前看起来最优的选项。

0-1背包问题
       与可分背包问题不同,0-1背包问题中的物品不能分割。您必须决定是否将整个物品放入背包。这就需要使用动态规划来找到最优解。动态规划通过考虑所有可能的组合来确保找到最大价值。它使用一个二维数组 ( dp[i][w] ) 来存储对于前 ( i ) 个物品,当背包容量为 ( w ) 时的最大价值。状态转移方程如下:

𝑑𝑝[𝑖][𝑤]=max⁡(𝑑𝑝[𝑖−1][𝑤],𝑑𝑝[𝑖−1][𝑤−𝑤𝑒𝑖𝑔ℎ𝑡[𝑖]]+𝑣𝑎𝑙𝑢𝑒[𝑖])

       这里,( dp[i-1][w] ) 表示不选择第 ( i ) 个物品时的最大价值,而 ( dp[i-1][w-weight[i]] + value[i] ) 表示选择第 ( i ) 个物品时的最大价值。通过这种方式,动态规划确保了在每一步都考虑了所有可能的选择,从而找到了最优解。

软考上也是有类似的题的。

请填写1到4个空。

我来解释这道题吧

首先将c这个二维数组变为0,也就是初始化,那个Memoized_Knapsack这个函数,将c二维数组设置为-1,-1就是已经结束的意思,然后执行Calculate_Max_Value这个函数,这个函数第一件事情就是判断c[i][j]是否为-1,如果是-1就已经结束了,所以这个1这个空应该填c[i][j]。第二个if判断也不难看出就是简单的将物体数量为0的设置为0,把背包容量为0的设置为0.,倘若不知道下面的i,和j代表的什么可以看我上面写的。i是物品数量,j是背包容量。

所以第二个空应该是j>=w[i],因为只有剩余的背包容量大于或者等于w[i]里面的容量,才可以被选进去,第三个空是再次调用Calculate_Max_Value(v,w,i-1,j-w[i])+v[i]  ,当c[i][j]选的值比那个temp小的时候,就进行一次互换就行了,也就是c[i][j]=temp。

总结:我觉得很好理解吧,求取到第i的物品的价格就是c[i][j],然后求下一个物品和之前的总价格temp,在与之比较,就行了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【电路笔记】-二阶滤波器

二阶滤波器 二阶(或双极)滤波器由两个连接在一起的 RC 滤波器部分组成,可提供 -40dB/十倍频程滚降率。 1、概述 二阶滤波器也称为 VCVS 滤波器,因为运算放大器用作压控电压源放大器,是有源滤波器设计的另一种重要类型,因为与我们之前研究过的有源一阶 RC 滤波器一起,…

常见排序算法之选择排序

目录 一、选择排序 1.1 什么是选择排序? 1.2 思路 1.2.1 思路一 1.2.2 优化思路 1.3 C语言源码 1.3.1 思路一 1.3.2 优化思路 二、堆排序 2.1 调整算法 2.1.2 向上调整算法 2.1.3 向下调整算法 2.2 建堆排序 一、选择排序 1.1 什么是选择排序&#xf…

985上交应届生转正12天,被某东辞退了!

👇我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299,限时特价2杯咖啡,满100人涨10元。 01.事情起源 最近粉丝群都在转发一个截图,某应届毕业生在某东实习一年,才转正才12天,就因为自己调侃…

打包软件注意

1.建个文件夹D:333 /Dalsa_Cameras /cam1 cam2 2. 3.缺的包 4.自动启动.exe exe快捷方式放一起

增强创作者能力:The Sandbox 首届 “创作者挑战” 回顾

首届 "创作者挑战" 为创作者在平台上赚取收入提供了难得机会。 我们发起 “创作者挑战” 的目的是支持创作者,赋予他们构建元宇宙的能力。我们提出三大行动号召:发布、参与和赚钱。新推出的「参与奖池」(Engagement Pool&#xff0…

深度学习500问——Chapter09:图像分割(3)

文章目录 9.8 PSPNet 9.9 DeepLab系列 9.9.1 DeepLabv1 9.9.2 DeepLabv2 9.9.3 DeeoLabv3 9.9.4 DeepLabv3 9.8 PSPNet 场景解析对于无限制的开放词汇和不同场景来说是具有挑战性的。本文使用文中的 pyramid pooling module 实现基于不同区域的上下文集成,提出了PS…

长三角智能科技高端盛会—南京人工智能展览会(南京智博会)

南京,作为一座历史悠久的文化名城,早已不仅仅以其深厚的文化底蕴和独特的自然风貌著称于世。而今,这座古老而又年轻的城市,正以其卓越的科技实力和创新精神,成为中国乃至全球科研领域的一颗璀璨明珠。南京不仅是中国三…

5倍收益秘诀:APP广告如何变现?

在这个数字时代,智能手机几乎成了我们生活中不可或缺的一部分。无论是早晨醒来的第一件事,还是睡前的最后一件事,手机都与我们紧密相连。而在这个连接的世界里,APP广告变现成为了一个热门话题,它不仅仅是将每一次点击转…

5.2网安学习第五阶段第二周回顾(个人学习记录使用)

本周重点 ①HIDS的基本应用(suricata) ②Suricata的基本应用 ③Suricata的流量检测 ④Suricata的https流量检测 ⑤利用Elastic整合Suricata日志 ⑥利用Wazuh对Suricata主动响应 本周主要内容 ①HIDS的基本应用(suricata) 1、NIDS 1、定义:网络入侵检测系统…

关于k8s集群的污点和容忍,以及k8s集群的故障排查思路

一 污点(Taint) 和 容忍(Tolerations) (一)污点 在Kubernetes(K8s)中,污点(Taints)是一个重要的概念,用于实现Pod的调度控制。以下是关于污点的详细解释:1.污点定义 污点…

149.二叉树:二叉树的前序遍历(力扣)

代码解决 这段代码实现了二叉树的前序遍历,前序遍历的顺序是:访问根节点 -> 递归遍历左子树 -> 递归遍历右子树。以下是详细解释,包括各个部分的注释: // 二叉树节点的定义 struct TreeNode {int val; // 节…

OpenStack创建云主机——超级详细步骤

四、创建云主机 一台云主机成功创建或启动需要依赖OpenStack中的各种虚拟资源,如CPU、内存、硬盘等。如果需要云主机丽娜姐外部网络,还需要网络、路由器等资源。如果需要外部网络访问云主机,那么还需要配置浮动IP。因此,在创建云主…

企业融资新渠道:一文详解动产抵押

在当今瞬息万变的商业环境中,资金是企业发展的血液。面对融资难题,动产抵押作为一种灵活高效的融资方式,越来越受到企业的青睐。本文将为您全面解析动产抵押的概念、流程、优势及注意事项,助力您的企业解锁融资新途径。 什么是动…

怎么看外国的短视频:四川鑫悦里文化传媒有限公司

怎么看外国的短视频:跨文化视角下的观察与思考 随着全球化进程的加速和网络技术的飞速发展,外国短视频逐渐走进了我们的视野。这些来自不同文化背景、语言体系和审美观念的短视频作品,为我们打开了一扇了解世界的窗口。然而,如何…

【vue】封装的天气展示卡片,在线获取天气信息

源码 <template><div class"sen_weather_wrapper"><div class"sen_top_box"><div class"sen_left_box"><div class"sen_top"><div class"sen_city">山东</div><qctc-time cl…

民国漫画杂志《时代漫画》第30期.PDF

时代漫画30.PDF: https://url03.ctfile.com/f/1779803-1248635414-87c8c8?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(九)

本系列课程&#xff0c;将重点讲解Phpsploit-Framework框架软件的基础使用&#xff01; 本文章仅提供学习&#xff0c;切勿将其用于不法手段&#xff01; 继续接上一篇文章内容&#xff0c;讲述如何进行Phpsploit-Framework软件的基础使用和二次开发。 现在&#xff0c;我们…

Flink 通过 paimon 关联维表,内存降为原来的1/4

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

如何破解navicat16

先安装好没破解的navicat16 以管理员身份运行 ‘无限试用Navicat.bat’ 复制这个 点击属性 打开文件所属位置 把复制的文件粘贴进去 直接启动navicat16

常用批处理命令及批处理文件编写技巧

一常用批处理命令 1.查看命令用法&#xff1a;命令 /? //如&#xff1a;cd /? 2.切换盘符目录&#xff1a;cd /d D:\test 或直接输入 d: //进入上次d盘所在的目录 3.切换目录&#xff1a;cd test 4.清屏:cls 5.“arp -a” //它会列出当前设备缓存中的所有…