• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LHgogo
博客园    首页    新随笔    联系   管理    订阅  订阅

01背包&完全背包二维写法的对比,进而理解一维优化后的正逆序

理解一维写法中的01背包逆序&完全背包正序

01背包题解

完全背包题解

二维写法时两种背包问题核心代码的区别:

可以看出,01背包用的是上一层的数据,完全背包用的是当前层的数据
所以优化为一维时,
01背包需逆序

    for (int i = 1; i <= n; i ++)
        for (int j = m; j >= v[i]; j --)
            f[j] = max(f[j], f[j - v[i]] + w[i]);

完全背包需正序

    for (int i = 1; i <= n; i ++) 
        for (int j = v[i]; j <= m; j ++)
            f[j] = max(f[j], f[j - v[i]] + w[i]);
posted on 2022-10-03 11:22  无人圣地  阅读(123)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3