0-1背包&完全背包

动态规划dp

背包通用

背包是一种动态规划

也就是说,背包需要有动态转移方程和dp数组,但是通常背包用于处理有两个或者多个限制条件的问题,例如时间和价值、背包空间和价值等等。

既然有两个限制条件,那么就要用一个二维数组dp[n][c]dp[n][c],假设dp[i][j]=ijdp[i][j]=挑选前i种物品,空间剩余为j的情况下的最大价值

0-1背包

0-1背包是指每种物品只能用一次的一种背包。即每个物品只能选择拿或不拿。那么我们要看的不就是拿这一样还是不那么?假设这是第i样物品,假值存在v数组中,体积存在w数组中。状态状态转移方程就是:
dp[i][j] = max(dp[i-1][j],dp[i-1][j-w[i]]+c[i]);

完全背包

与01背包相对,即每个物品有无限多个或题目给出的数量,可以不拿或拿多个