《背包九讲》学习笔记(未完待续)

《背包九讲》学习笔记(未完待续)

背包九讲下载地址


1. 01 背包问题

描述

n 个物品放进容量为v的背包,第 i 个物品的价值为wi,花费为 ci ,问能装入物品的最大总价值。

核心代码

///dp[j]为前i个物品装在容量为j的背包内可以产生的最大总价值
int dp[v + 1] = {0};
for(int i = 0; i < n; ++i) {
    for(int j = v; j >= c[i]; --j) {
         ///对于每个物品i,对于容量j,判断是否从容量j-c[i]的背包加上一个i物品转移来更优
        dp[j] = max(dp[j],dp[j - c[i]] + w[i]);
    }
}

复杂度

  • 时间复杂度
    O(vn)
  • 空间复杂度
    O(v)

例题

待续

备注

初始化:
  • 当不要求全部装满背包时,全部初始化为0
  • 当要求全部装满背包时,dp[0]初始化为0,其余的初始化为-INF
  • 各类背包可参照该初始化技巧
与完全背包在写法上的区别:
  • j v递减到 ci ,因为每次只会访问下标比j小的dp值,故这样可以保证每种物品最多被取一次

2. 完全背包问题

描述

n 种物品各无限个放进容量为v的背包,第 i 种物品每个的价值为wi,花费为 ci ,问能装入物品的最大总价值。

核心代码

///dp[j]为前i种物品装在容量为j的背包内可以产生的最大总价值
int dp[v + 1] = {0};
for(int i = 0; i < n; ++i) {
    for(int j = c[i]; j <= v; ++j) {
        ///对于每个物品i,对于容量j,判断是否从容量j-c[i]的背包加上一个i物品转移来更优
        dp[j] = max(dp[j],dp[j - c[i]] + w[i]);
    }
}

复杂度

  • 时间复杂度
    O(vn)
  • 空间复杂度
    O(v)

例题

备注

与01背包在写法上的区别:
  • j ci递增到 v <script type="math/tex" id="MathJax-Element-20">v</script>,当访问下标比j小的dp值时,该值可能是已经加入了物品i而产生的,故这样可以使每种物品被取多次
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值