算法day42|背包问题
创始人
2024-03-23 06:49:18

目录

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中的数无法平均拆成两半,那么返回falseif target % 2 == 1: return Falsetarget //= 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 Trueelse:return False

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

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

代码随想录

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

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...