问题描述:
有n 个物品,它们有各自的重量和价值,现有给定容量c的背包,如何让背包里装入的物品具有最大的价值?
思路分析:
一、动态规划:
1、把背包问题抽象化(X1,X2,…,Xn,其中 Xi 取0或1,表示第 i 个物品选或不选),Vi表示第 i 个物品的价值,Wi表示第 i 个物品的体积(重量);
2、建立模型,即求max(V1X1+V2X2+…+VnXn);
3、约束条件,W1X1+W2X2+…+WnXn<c;
4、定义m(i,j):当前背包容量 j,前 i 个物品最佳组合对应的价值;
5、寻找递推关系式,面对当前商品有两种可能性:
第一,背包的容量比该商品体积小,装不下,此时的价值与前i-1个的价值是一样的,即V(i,j)=V(i-1,j);
第二,还