算法分析—动态规划(背包问题)
最近在学习动态规划,对于背包问题十分感兴趣。写下自己的感受,也算也是对自己学习的监督。
01背包问题
问题描述:
给定N种物品和一个背包。物品i的重量是Wi,其价值位Vi ,背包的容量为C。问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大??
限制条件:
1<=N<=10
1<=vi,wi<=100
1<=W<=10000
根据动态规划解题步骤:1)划分子问题:设置dp[i+1][j]:=从前i个物品中挑选不超过j的物品总价值最大值
2)列出状态转移方程:dp[i+1][j]=max(dp[i][j],dp[i][j-w[i]]+v[i]) 这里的理解就很关键了,从前i个物品中挑选不超过j的物品总价值最大值等价于两种情况1.不挑选第i个物品,从前i-1个物品中挑选不超过j的物品总价值最大值 2.挑选第i个物品,