2019/2/6 写给自己背包问题的小总结,

背包问题:

①.  0/1背包, 每个物品只有1个,即只能选或者不选, 用结构体存贮每个物品的重量和价值,

                    然后fori(遍历每个物品),再forj(1-i);

②.  完全背包.每个物品都有无限个,可以选择无限个, 用结构体存贮每个物品的重量和价值,

                    然后fori(遍历每个物品),再forj(i-1);

③.  多重背包.每个物品有有限个数,可以选择特定个,用二进制优化,将每种相同物品拆解成捆绑在一起的数个可看成单个的物品,

                   然后当做0/1背包来求解.

 

是否恰好装满, 

①. 没要求恰好装满,那么dp初始化全为0;

②. 要求恰好装满,那么dp[0]=0;dp[其他]=负inf;

posted @ 2019-02-06 11:08  缘未到  阅读(146)  评论(0编辑  收藏  举报