完全背包问题的时间优化及其理解:使用一维dp数组的背包
Re:View
上一篇:完全背包最简单粗暴的解法https://blog.csdn.net/weixin_44176696/article/details/104073113
优化
优化的方式有些许雷人,就是把一维数组表示的 01 背包问题(戳这里回顾01背包的一维dp数组表示)的状态计算的内环的for循环改个方向即可:
// 完全背包的一维dp数组的更新
// dp[j] 表示第i次主循环中,使用费用j拿取前i个物品的最大价值
// n是物品数,m是背包容量
// value[i],cost[i]表示第i件物品的价钱,重量
for(int i=2; i<=n; i++)
{
for(int j=0; j<=m; j++)
{
if(j >= cost[i])
{
dp[j] =