今天记录一下我所理解的01背包问题动态规划求解思路
思路如下
m代表背包承重
wp代表物品重量和物品价值数组
设置全局变量result数组记录当前重量和存放物品个数最大价值
两个for从1开始遍历,设置0位置默认为0
如果当前物品重量大于背包重量
result[tempM, tempI] = result[tempM, tempI - 1];
最大价值数组减去这个物品不受影响
或者开始比较放或者不放这个物品哪个最大价值高
int maxValue1 = result[tempM - w[tempI], tempI - 1] + p[tempI];
int maxValue2 = result[tempM, tempI - 1];
if (maxValue1 > maxValue2)
{
result[tempM, tempI] = maxValue1;
}