01背包:
问题描述:
现在有4个货物,表示成数值对的形式(重量w,价值v)分别为(2,3);(1,2);(3,4);(2,2)
如果现在有一个人只能拿得动质量为5的东西,怎么选择可以在能力范围内拿到最大价值的货物。
问题解析:
绘制一个2D表格,横向表示能力值上限(最大重量总和),纵向向下依次取第0,1,2,3,4件货物,经过决策后的最优结果dq记录在表格中:
1、易知,无论是最大重量还是货物为0时,最后的价值只能是0,即表格的第一行和第一列都是0;
2、从第一件货物开始,假设最大重量变为1,对第一件货物(2,3)而言,还是无能为力,因此价值为0;
假设最大重量变为2,对第一件货物(2,3)而言,可以取走,价值变为3;
假设最大重量变为3,4,5,对第一件货物(2,3)而言,都可以取走,价值变为3;
则得到第一列,若果只有第一件货物能决策到的最优情况表。
3、接下来判断第二件货物:
假设最大重量变为1,对第二件货物(1,2)而言,可以尝试;如果决定取走