01背包问题 二维
视频讲解:带你学透0-1背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经典问题 | 数据结构与算法_哔哩哔哩_bilibili
初步思路:动态规划 背包问题。
总结:
dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。
递归公式: dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
用时:30分钟
01背包问题 一维
视频讲解:带你学透01背包问题(滚动数组篇) | 从此对背包问题不再迷茫!_哔哩哔哩_bilibili
初步思路:动态规划 背包问题。
总结:
[1] 递归公式: dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
[2] 二维dp遍历的时候,背包容量是从小到大,而一维dp遍历的时候,背包是从大到小
[3] 一维dp必须先遍历物品嵌套遍历背包容量
用时:45分钟
416. 分割等和子集
视频讲解:动态规划之背包问题,这个包能装满吗?| LeetCode:416.分割等和子集_哔哩哔哩_bilibili
初步思路:动态规划。
总结:套用01背包,背包的体积为sum / 2 -》
dp[j]表示 背包总容量(所能装的总重量)是j,放进物品后,背的最大重量为dp[j]。
背包装满的时候, dp[target] == target。
用时:45分钟