前言
前面的文章介绍了动态规划的基本概念以及一些解题技巧, 并分析了其中的一些基础问题, 包括《爬楼梯》,《不同路径》, 《整数拆分》等 , 这次, 我们开始动态规划中的一个新的篇章, 01背包问题。 01背包问题是背包问题中较为简单的一种, 背包问题还包括完全背包问题以及多重背包问题, 不过从我面试的经历来看, 掌握01背包问题和完全背包问题即可
01背包问题
背包问题分类
01背包概念
有N种物品和⼀个最多能被重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每种物品只有一个(那么这个物品要么被选, 要么不被选),求最大可放入背包的物品价值总和
分析
- 这里有两个变量, 分别是物品种类和背包容积, 故考虑用二维动态规划来解决问题
- 对于一个物品来说, 只有选与不选两种情况, 故应当从这两种情况中取最大价值
- 选一个物品, 那么应该要求当前的背包容积大于该物品的重量
- 0