算法day42|背包问题

news2024/9/22 11:38:21

目录

01背包问题 二维

01背包问题 一维

416. 分割等和子集


背包问题分为:01背包,完全背包,多种背包

 

  • 01背包指的是有n种物品,每种物品只能取一个
  • 完全背包指的是有n种物品,每种物品可以取无限个
  • 多种背包指的是有n种物品,每种物品的数量各不相同

题目: 那么假设有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。

01背包问题 二维

动态规划五部曲:

  • 初始化

首先从dp[i][j]的定义出发,如果背包容量j为0的话,即dp[i][0],无论是选取哪些物品,背包价值总和一定为0。如图:

 最后

  • 遍历顺序

遍历顺序可以先遍历物品,也可以先遍历书包重量

  • dp数组的定义以及含义

即dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。

  • 递归公式

dp[i][j]分为两种情况,一种是取i这个物品,一种是不取i这个物品

取i这个物品:

dp[i-1][j-weight[i]]+value[i]

由dp[i - 1][j - weight[i]]推出,dp[i - 1][j - weight[i]] 为背包容量为j - weight[i]的时候不放物品i的最大价值,那么dp[i - 1][j - weight[i]] + value[i] (物品i的价值),就是背包放物品i得到的最大价值

不取i这个物品:dp[i-1][j]

由dp[i - 1][j]推出,即背包容量为j,里面不放物品i的最大价值,此时dp[i][j]就是dp[i - 1][j]。(其实就是当物品i的重量大于背包j的重量时,物品i无法放进背包中,所以被背包内的价值依然和前面相同。)

然后两个取其中的最大值

  • 打印dp数组

代码随想录

视频讲解:带你学透0-1背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经典问题 | 数据结构与算法_哔哩哔哩_bilibili

01背包问题 一维

滚动数组的想法,不断的取更新数组

代码随想录

视频讲解:带你学透01背包问题(滚动数组篇) | 从此对背包问题不再迷茫!_哔哩哔哩_bilibili

面试问题:

二维数组实现后,遍历顺序可以调换吗?

一维数组实现后,遍历顺序可以调换吗?for循环为什么是从后往前,而不是从前往后

416. 分割等和子集

class Solution:
    def canPartition(self, nums: List[int]) -> bool:
        target = sum(nums)
        #如果nums中的数无法平均拆成两半,那么返回false
        if target % 2 == 1: return False
        target //= 2
        #定义dp数组,并且确定其含义,dp[j]意味着取j容量的最大价值,这里价值和容量相等
        dp = [0] *10001
        #遍历物体
        for i in range(len(nums)):
        #遍历容量,容量要从后向前遍历才不会取重复物体
            for j in range(target, nums[i] - 1, -1):
                #分两种情况,取i/不取i,不取i的话,就是dp[j]。
                #取i物品的话,dp[j-nums[i]] j容量需要减去物品i的容量,再加上它的价值
                dp[j] = max(dp[j], dp[j - nums[i]] + nums[i])
        #最后背包容量是target,dp[target]是装满背包后的容量
        if target == dp[target]:
            return True
        else:
            return False

时间超时了,我也不知道为什么

本题是 01背包的应用类题目

代码随想录

视频讲解:动态规划之背包问题,这个包能装满吗?| LeetCode:416.分割等和子集_哔哩哔哩_bilibili

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

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

相关文章

公众号网课搜题接口

公众号网课搜题接口 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击…

常用的在线工具网站

1,在线Photoshop软件 https://www.uupoop.com/ PS在线图片编辑器是一个专业精简的在线ps图片照片制作处理软件工具,绿色免安装,免下载,直接在浏览器打开就可用它修正,调整和美化图像。 2,bilibili视频编辑器 https://bilibili.clipchamp.com/ 由哔哩哔哩…

(保姆级)国内1块钱注册火爆全网的OpenAI-ChatGPT机器人

下面有给出完整的注册流程。首先介绍一下它是什么,如果只想看注册往下翻! 1块钱注册火爆全网的OpenAI-ChatGPT机器人OpengAI-ChatGPT能做什么如何注册1块钱收取验证码使用注册的账号登录ChatGPTOpengAI-ChatGPT能做什么 我作为一个程序员用了一段时间&a…

金蝶云星空生产管理(冲刺学习)

物料“基本”和“生产”相关属性字段介绍 物料属性:生产中常用的物料属性包括自制、委外、外购、虚拟、配置、特征。 自制:一般是指由企业自己生产的物料,一般会建BOM、生产订单; 委外:是指委托给其他加工单位进行加工…

DevTools 无法加载来源映射:无法加载 chrome-extension: 警告的原因以及如何去除(全网最全 最详细解决方案)

是类似这样的一个警告。每次都有看着还是挺难受的。 这个警告的原因是你的浏览器插件造成的。例如警告已经很明确的告诉你是chrome-extension,也就是谷歌插件的问题。后面的字符串其实就是这个插件的id。 chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/br…

QT笔记——QSlider滑动条滚轮事件和点击鼠标位置事件问题

需求:我们需要对一个滑动条 滚轮事件 和 点击到滑动条的位置 实时显示 问题:其中在做的时候遇到了很多的问题,一开始感觉很简单,现在将这些问题记录下来 ui图: 问题1:处理QSlider 滚轮事件的时候 这里有…

AlphaFold2源码解析(8)--模型之三维坐标构建

AlphaFold2源码解析(8)–模型之三维坐标构建 这个模块我们讲解AlphaFold的Structure module模块,该结构模块将蛋白质结构的抽象表示映射为具体的三维原子坐标。 Evoformer的单一表征被用作初始单一表征siinitial{s^{initial}_i }siinitial​,siinitial∈…

同步整流 降压恒流 输入4-40V 功率可达40W 电流3.6A 原理图

◆PCB 布线参考PCB 布局应遵循如下规则以确保芯片的正常工作。1:功率线包括地线,LX线和VIN线应该尽量做到短、 直和宽。2:输入电容应尽可能靠近芯片管脚(VIN 和 )。输入电源引脚可增加一个 0.1uF 的陶瓷电容以增强芯片的抗高频噪声能力。3:功…

小迪-day13(MySQL注入)

一、information_schema information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列…

信号和电源隔离的有效设计技术

介绍 如今,电子产品设计师比以往任何时候都更面临着一系列共同的目标:实现更高的吞吐量、更高的分辨率、更高效的系统和缩短上市时间。在工业自动化、医疗电子或电信系统等领域,通常需要电隔离多个信号,以使子系统能够共享数据或…

农民歌唱家大衣哥外出商演,大衣嫂在家晒麦子,真是一对金童玉女

在中国华语乐坛,曾经有很多对模范夫妻,比如说任静和付笛声,他们也是音乐领域的金童玉女。其实大家都忽略了一对夫妻,农民歌唱家大衣哥,和他的结发妻子玉华,同样是中国华语乐坛的骄傲。 只是因为大衣哥过于低…

计算机网络复习(一~三)

第一章 基本概念 1-01.计算机网络可以向用户提供哪些服务? 答:例如音频,视频,游戏等,但本质是提供连通性和共享这两个功能。连通性:计算机网络使上网用户之间可以交换信息,好像这些用户的计算…

RDPCrystal EDI SDK 10.0.4.X Crack

关于 RDPCrystal EDI 库 使用 .NET、NodeJS、JavaScript 或 .NET Core 创建、查看和验证 EDI 数据。 RDPCrystal EDI 库是一套 EDI 组件(.NET、NodeJS/JavaScript 和 .NET Core),可以创建和操作任何 X12 标准文件。功能包括解析、连接、拆分、…

【Unity】填坑,Unity接入Epic Online Service上架Epic游戏商城

EOS SDK For Unity地址:https://github.com/PlayEveryWare/eos_plugin_for_unity_upm Epic是虚幻游戏引擎开发商,2018年12月Epic宣布推出Epic游戏商城至今刚好三年,Epic将平台分成定为12%(远低于当时Steam的30%),并且频繁推出各种…

每天一个面试题:四种引用,弱引用防止内存泄漏

每天一个面试题:四种引用四种引用基本介绍实例Demo- 虚引用弱引用防止内存泄漏弱引用Debug分析源码开始全新的学习,沉淀才会有产出,一步一脚印! 面试题系列搞起来,这个专栏并非单纯的八股文,我会在技术底层…

ZStack出品|制造业专属的VMware迁移方案长啥样?

导读:在国家大力推动信息技术自主化的背景下,制造业也在积极寻找自身信息化改革的路线。作为信息化技术的基石,虚拟化基础架构替换迫在眉睫。本文将从技术层面详细介绍VMware迁移至 ZStack Cloud 云平台的方案,助力制造业实现“信…

阿里P9整理分享的亿级流量Java高并发与网络编程实战PDF

前言 有人调侃我们说: 程序员不如送外卖。送外卖是搬运食物,自己是搬运代码,都不产出新的东西……透支体力,又消耗健康,可替代性极强,30岁之后就要面临被优化的危险……想跳槽,但是更高的平台…

云原生|kubernetes|使用cri-docker部署基于kubeadm-1.25.4的集群

前言: kubernetes的部署从1.24版本开始后,弃用docker-shim,也就是说部署1.24版本后的集群不能使用docker-ce了。 比较清晰的解决方案有两个,一是使用containerd,这个是一个新的支持cri标准的shim,一个是使…

opencv基础-印度小哥

基础课程 第一章-读取图片、视频和摄像头 Chapter 1 – Read Images Videos and Webcams图片放在程序所在文件夹下的Resources/test.png 1.1 opencv读取一张图片并显示&#xff1a; #include <opencv2/imgcodecs.hpp> #include <opencv2/highgui.hpp> #include …

Jmeter命令执行生成HTML格式报告详解

1、Dashboard&#xff08;概览仪表盘&#xff09; ①、Test and Report informations Test and Report informations&#xff1a;测试和报告信息: 测试结果保存文件/测试开始时间/测试结束时间/展示过滤器。 ②、APDEX (应用性能指标) APDEX(Application Performance Index)&am…