一句话搞定所有背包问题
dp[ i ][ j ]为当选择到第i件商品,背包总容量为j时的最大价值。
// 0—1背包, dp[ i -1][ j ]为不选第i件物品,dp[ i-1 ][ j - ci ] + wi 为选第i件物品 dp[ i ][ j ] = max ( dp[ i - 1][ j ], dp[ i - 1 ][ j - ci ] + wi ); // 完全背包, dp[ i -1][ j ]为不选第i件物品,dp[ i ][ j - ci ] + wi 为选至少选一件第i件物品 dp[ i ][ j ] = max ( dp[ i - 1][ j ], dp[ i ][ j - ci ] + wi ); // 多重背包:可以把一种物品多件拆分成一件一件的,然后用01背包来解决