多重背包/完全背包/01背包 的 内循环 的 逆序/顺序

对于01背包

内循环是逆序

dp[j]=max(dp[j],dp[j-w[i]]+v[i]);

保证了每一次取的dp[j-w[i]]是选取前i-1个的最优解

对于完全背包

内循环是顺序

dp[j]=max(dp[j],dp[j-w[i]]+v[i]);

这里的dp[j-w[i]]已经被更新为前i个的最优解了

多重背包

内循环是顺序,然后在选取i个的里面,按照数量再展开

猜你喜欢

转载自www.cnblogs.com/guaguastandup/p/10557713.html