- 这个算法是基于动态规划设计思想
- 个人理解 核心:动态改变背包的重量,从小到大讨论,在小重量到大重量这个过程中,每一个当前重量最大价值是多少,算出来并记下来,形成一个结果表
- 例如:背包重量为1 最大价值是20 当背包重量为2 最大价值是30
- 如何求当前重量的最大价值呢?
- 1.如果当前重量太小,没有任何一个东西能放得下,那就加重量
- 2.由于重量是慢慢变大的,所以一开始就只能放一个东西,最高价值就是东西的最高价值
- 3.记住当重量变大到可以放两个东西时,那当前重量的最大价值为 目前要放进去的东西价值+加上剩余重量下的东西最高价值
- 举个例子 包重量10 我要准备把7重量的东西放进去 是不是还剩下3重量,请问3重量下最高价值是多少?
- 答案其实已经在你之前记录的表里了,因为你是从1重量慢慢记录下来最高东西价值是多少,一直到记录到10,3重量最高价值也记录下来了
动态规划:核心就是保存已解决的最优子问题,求解一个由子问题叠加的问题时,之前已经保存了最优解直接拿来用