一句话搞定所有背包问题

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背包来解决

 

posted @ 2022-03-28 16:00  .有梦想的咸鱼丶  阅读(37)  评论(0)    收藏  举报