给定一组物品,每种物品都有自己的重量(体积)和价值,现有一个背包,在受限制的重量(或者容积)下,取若干物品,使得总价值最大。这一类问题,被称为背包问题
    对于每个物品是否要装入背包,我们自然可以进行暴力枚举或搜索,但是如果要暴力地去做,那么时间复杂度会非常的高,这时候需要一种更加优化的算法——动态规划。

    1. 确定状态:共有动态规划:0-1 背包问题 - 图1个物品,背包总承重为动态规划:0-1 背包问题 - 图2,根据物品和容量确定状态,对于前动态规划:0-1 背包问题 - 图3个物品放在背包里且总重量不超过动态规划:0-1 背包问题 - 图4,有最大价值动态规划:0-1 背包问题 - 图5
    2. 决策:是否将第i个物品装入背包。为了使价值最大化,要求第动态规划:0-1 背包问题 - 图6个物品放入背包后总重量不超过限制且总价值比之前大。则有状态转移方程:

      动态规划:0-1 背包问题 - 图7
      动态规划:0-1 背包问题 - 图8