POJ 3624 0-1背包问题 动态规划
2010-11-30 23:57
375 查看
第一道背包问题,0-1背包,参考网上一位大牛写的做的。状态方程:dp[i][w] = max{dp[i-1][w], dp[i-1][w-obj[i].wei] + obj[i].val]},但这样会超内存,需要一个空间复杂度的优化将dp改为一维,这招看来以后得常用,具体见转载的《背包九讲》。
明天好好读读《背包九讲》,在多做几道dp变形题,练习在于精不在多。
明天好好读读《背包九讲》,在多做几道dp变形题,练习在于精不在多。
#include <iostream> using namespace std; const int mMax = 3500;//待选物品个数 const int nMax = 14000;//最大容量 struct{ int wei,val; }node[mMax]; int main(){ int n,m,i,w,dp[nMax]; cin>>n>>m;//n为物品个数,m为最大容量 for (i = 1;i <= n;i++) cin>>node[i].wei>>node[i].val; memset(dp,0,(m+1) * sizeof(int)); for (i = 1;i <= n;i++) for (w = m;w >= node[i].wei;w--)//从后向前dp,前面的数会影响后面的 if (dp[w] < dp[w - node[i].wei] + node[i].val) dp[w] = dp[w - node[i].wei] + node[i].val; cout << dp[m]<<endl; return 0; }
相关文章推荐
- POJ 3624 0-1背包问题 动态规划
- 0-1背包问题,poj 3624 Charm Bracelet动态规划-解题报告,增加最优路径构建
- POJ3624 - Charm Bracelet - 动态规划之01背包
- poj 1742 Coins (动态规划,背包问题)
- POJ 3624 Charm Bracelet 动态规划(01背包问题)
- [背包] poj 3624 最基本的背包问题
- POJ 3624 Charm Bracelet (0-1背包问题)
- POJ-3624-Charm Bracelet-简单0/1背包、动态规划、DP
- POJ 1276 Cash Machine -- 动态规划(背包问题)
- POJ 3624 0-1背包问题
- poj 3624 Charm Bracelet DP 0/1 背包问题
- 【动态规划/多重背包问题】POJ1014-Dividing
- POJ 1276 Cash Machine -- 动态规划(背包问题)
- 动态规划 背包问题 poj 1837 Balance
- 2011.12月初 背包问题专辑POJ 3624 1276 2392 1837
- POJ 3624 Charm Bracelet【裸01背包和关于贪心解 01 背包问题的思考】
- POJ - 3624 (01背包问题)(动态规划-滚动数组)
- POJ 3624 /背包问题
- 0-1背包问题入门小结 动态规划(DP)经典题目 POJ324 POJ1276
- 0-1背包问题入门小结 动态规划(DP)经典题目 POJ324 POJ1276