关于初级dp的一些记忆
2017-03-17 09:12
232 查看
01背包和数塔都是寒假看的,数塔还算明白,但01背包虽然会做其实也是背下来的,一直不是很清楚它的可行性,昨天老师讲了以后恍然大悟,和数塔类似生成了一颗二叉树;
利用数组/dfs 自下而上/自上而下 递推/搜索 直至推到最顶点答案出现;
图解:
图没工夫做了,手残= =、;
意思就是每件物品根据取或不取两种状态生成了这颗解答树,不难发现和数塔类似了吧,用一个一维数组保存每次决策后的结果即可;
其实本来和数塔一样是用二维数组表示的,但显然只用一维就可还大大节省了空间;
这就是一件物品一件物品决策的原因(以前困惑很久);
for(i=1;i<=n;i++)
for(j=m;j>=w[i];j--)
dp[j]=max{dp[j],dp[j-w[i]]+p[i]}; //检测选或不选的可行性
相关文章推荐
- 关于一些初级ACM竞赛题目的分析和题解(三)。
- 关于01背包dp的一些理解
- 关于linux中多线程编程的一些初级问题
- 一些关于公司的记忆
- 关于android中dpi px dp sp 单位的一些理解
- [29期] 关于HTML学习以及标签记忆的一些感受
- 一些关于状压dp的题目
- 关于一些初级ACM竞赛题目的分析和题解(十)
- [dp]关于动态规划的一些理解
- 关于Donews的记忆---一些句子
- 关于Linux Shell的一些初级零碎知识点
- 关于setter 和 getter方法的一些总结(初级)
- 关于联通块DP的一些问题(to be continued)
- 转自知乎一朋友关于java程序员初级学习的一些见解
- 关于一些初级ACM竞赛题目的分析和题解(七)。
- 关于一些初级ACM竞赛题目的分析和题解(九)
- 【DP/单调栈】关于单调栈的一些题目(codevs 1159,codevs 2673)
- 【DP/单调栈】关于单调栈的一些题目(codevs 1159,codevs 2673)
- 一些关于opengl的记忆
- 关于2005年的一些事情的记忆