0 1背包状态压缩
来源:互联网 发布:js数组地址指向 编辑:程序博客网 时间:2024/06/02 01:59
01背包的状态压缩
当然肯定是看了别人的博客,我再重复一下,大神链接:点击打开链接
1、 在看之前希望你已经弄懂了空间复杂度在O(n*w)的算法,空间的压缩到O(w)的状态,其实本质还是一样的,就是从i-1的状态去求解i的状态,在这先看代码:
2、 代码很是简短,可能你一看到代码就感觉懂了,w的从大到小,那么从小到大可以吗?那是肯定不行的,当w从大到小时,我们每次内层循环求解的是加入i的最优解,那肯定是在i-1的基础上进行的,假如加入i之前dp【j】的每一个值都代表i-1状态的最优解,那么我们加入i时,我们计算的是dp【j】=get_max(dp【j】,dp【j-c【i】】+p【i】);
dp【j-c【i】】+p【i】它的状态肯定是i-1的状态,可以看出j的值按照逆序从大到小求解,每次加入i就需要j-c【i】,这时候j的状态是小的,那肯定是dp【】i-1的状态;
3、 那么如果按照j从小到大的顺序进行求解,当j的值比较大时,j-c【i】是谁的状态,那可就不好说了,可能是已经选择i的状态,也可能是i-1的状态,这样就错了。(我只能解释到这了,好好理解)
路径求解
有没有困惑如何知道选的是哪些呢?说实话别人真的很聪明,zz就好好学吧!
1、 其实问题很简单,我们如何求出的最大值,那么倒退过去不就行了,这里先讲一下二维的情况,一维的后面再说!
2、 我们这里只用了一个公式dp【i】【j】==dp【i-1】【j-i】+p【i】;只要满足这个条件,那肯定是选择了第i个物品,具体看代码
代码如下3、 下面介绍第二方法(这个挺重要的),看代码:
阅读全文
0 0
- 0 1背包状态压缩
- POJ 2923 Relocation (状态压缩 0-1背包)
- POJ 2923 Relocation 状态压缩DP + 0-1背包
- poj1170 状态压缩背包
- poj2923Relocation(01背包+状态压缩)
- uva10817(01背包 +状态压缩)
- poj2923 状态压缩背包dp
- hdu4739 Zhuge Liang's Mines 状态压缩dp,0-1背包
- poj 2923 Relocation(状态压缩+01背包)
- poj 2923 状态压缩 + 01背包
- poj 2923 Relocation 状态压缩01背包
- poj 2923 状态压缩,01背包
- poj 2923 Relocation 状态压缩+01背包
- poj2923(状态压缩+01背包)
- poj2923 Relocation (01背包+状态压缩)
- poj2923 Relocation(状态压缩+背包)
- POJ 2923 - Relocation(状态压缩+01背包)
- poj2923 01背包+状态压缩dp
- 7-16 paper reading
- Kotlin流程控制
- poj1182食物链(并查集)
- 60短信倒计时jquery的2中方法
- 写给大家看的设计书总结
- 0 1背包状态压缩
- aiml语言python对话系统构建
- 和数学家一样思考的10种方法
- css代码技术栈(一):CSS实现单行、多行文本溢出显示省略号(…)
- 机房讨论有感
- android pull解析XML
- 兔子的烦恼(一)
- 用标签显示用户列表及Value Stack和Stack Context
- Svn与Git的区别