关于01背包和完全背包二重循环的顺序(前人之技,后人惊叹)
2016-08-02 10:40
295 查看
01背包:
for(int I=1;i
for(int j=v;j>=cost[i];j--)
dp[j]=max(d[j],dp[I-cost[i]]+weight[I]);
为什么要从后往前循环!!!!
因为吧,从后往前循环,每次取得状态不会和你之前取得状态重合,这样就符合01背包的要求,每种物品只取一次;
完全背包:
for(int I=1;i
for(int j=cost[i];j<=t;j++)
dp[j]=max(d[j],dp[I-cost[i]]+weight[I]);
从前往后循环,每次取到的状态都会和前面的状态或多或少都有重叠,这样就刚好的满足了,每种物品无限取得要求了。
相关文章推荐
- 01背包问题 总结关于为什么01背包优化成1维数组后,内层循环是逆序的?
- 背包问题——01背包、完全背包、多重背包、混合三种背包问题
- 01背包、完全背包、多重背包详解
- 01背包、完全背包、多重背包
- 01背包与完全背包微妙的区别
- 背包之 01背包、完全背包、多重背包详解 <转载自奋斗哥のblog>
- 关于for 循环里 线程执行顺序问题
- [背包问题] 01背包、完全背包、整数找零
- 01背包,完全背包,多重背包 ,模板代码
- 01背包、完全背包、多重背包
- 背包问题(1)——01背包、完全背包、多重背包、混合三种背包问题
- HDU ACM 2844 Coins (多重背包)----------------01背包,完全背包,多重背包模板
- 背包问题(01背包和完全背包)
- 01背包和完全背包
- 01背包,完全背包,多重背包
- 背包问题——“01背包”及“完全背包”装满背包的方案总数分析及实现
- 动态规划-----背包问题-----01背包,完全背包,多重背包
- HDU 1059 01背包+完全背包=多重背包
- 寒假集训——01背包,完全背包
- HDU 2159 FATE (完全背包+有限取次)(二重费用背包)