这两个周看了线形DP和背包问题的例题,背包问题包括01背包,完全背包,多重背包,分组的背包问题。如果有个题每一步选择没有后效性,如果用贪心算时间空间复杂度太高,可以尝试用DP做,最关键的是写出来状态转移方程
最基础背包问题,每种物品只有一件可以选择放与不放,状态转移方程是:
完全背包问题和01背包问题的区别就是,每种物品可以选很多件,用很多件同种物品填满背包都可以,设没每种物品价值c[i]体积为v[i],这种物品的个数就转变成V/v[i]。
多重背包问题和完全背包问题的区别就是多重背包问题每种物品的个数是特定的
分组背包问题,一些物品和其他物品之间互相冲突,不能同时选择,要在这种情况下找到最多能装的最大价值,先把每一组里面最好的选出来再把各个组最好的放在一起进行取舍。