当前位置: 首页 > news >正文

算法题(212):01背包(空间优化)

审题:

本题是01背包模板题

思路:
方法一:动态规划(空间优化)

本题解基于(算法题(212):01背包-CSDN博客)继续进行优化分析

其实最后需要存储的数据只要有最后一行就行了,因为只要输出f[n][m]就行,那么我们就可以通过二维降一维的方法去存储数据,然后不断通过迭代计算去更新一维数组

这里演示了从f'不断迭代为f的过程,从开始到结束一直都只有一个一维数组

不过我们填表顺序就需要更改了,因为当前位置是依赖于上方和左上方的,所以我们需要从右往左进行更新,否则会导致数据更新错误

假设我们从左往右更新数据:

0号位置数据被改变后,可能依赖了0号位置更新的1号位置使用的就不是原来的0号位置数据,而是改变后的0号位置数据,也就相当于本来要用i-1行的数据,现在用成了第i行的数据更新,故该顺序错误

解题:

#include<iostream>
#include<cstring>
using namespace std;
const int N = 1e3+10;
int n,m;
int w[N],v[N];
int f[N];//f[i][j]表示在包含1~n范围的物品中进行选择且保证体积和为j,所得到的最大价值
int main()
{//数据录入cin >> n >> m;for(int i = 1; i <= n; i++){cin >> v[i] >> w[i];}//question onefor(int i = 1; i <= n; i++){for(int j = m; j >= v[i]; j--){f[j] = max(f[j],w[i]+f[j-v[i]]);}}cout << f[m] << endl;//question twomemset(f,-0x3f3f3f3f,sizeof f);f[0] = 0;for(int i = 1; i <= n; i++){for(int j = m; j >= v[i]; j--){f[j] = max(f[j],w[i]+f[j-v[i]]);}}if(f[m] < 0) cout << 0 << endl;else cout << f[m] << endl;return 0;
}

注意:

降维改代码方法:首先将所有二维的信息改为一维,比如将二维数组改为一维数组,相关初始化也是同理更改,不过双层for循环要保留,毕竟要迭代n次。

然后本题需要更改填表顺序,我们也改一下,相关的if语句也融合进for循环中。而去掉一维后如果出现f[i]=f[i]之类的无效命令我们也可以直接删掉

【模板】01背包

http://www.dtcms.com/a/391542.html

相关文章:

  • TP4054和TP4056对比
  • AD5165(超低功耗逻辑电平数字电位器)芯片的详细用法
  • 38、多模态模型基础实现:视觉与语言的智能融合
  • 租赁合同管理系统如何使用?功能深度解析
  • 构建高质量RAG知识库,文档解析破解AI应用的数据质量难题
  • CS课程项目设计17:基于Face_Recognition人脸识别库的课堂签到系统
  • 跨平台开发地图:客户端技术选型指南 | 2025年9月
  • 隐私保护 vs 技术创新:AI 时代数据安全的边界在哪里?
  • 如何在网页开发中建立数字信任?
  • 网站模版 网站建站 网站设计源码模板
  • 访问飞牛NAS的时候为啥要加:5667?不能隐藏它吗?啥是重定向?HTTPS为啥是红的?
  • 端口切换导致 mcp 和 gimini cli 连接失败
  • (论文速读)KL-CLIP:零采样异常分割的K均值学习模型
  • FlexE实践笔记
  • 搭建Redis群集模式
  • 视觉SLAM第13讲:实践,设计SLAM系统
  • 【论文阅读】WebWalker: Benchmarking LLMs in Web Traversal
  • 页面水印记录
  • 快速学习kotlin并上手 Android 开发指南
  • Linux进程控制(下):进程等待和进程替换
  • 如何检查数据库是否处于恢复模式
  • AI一周资讯 250913-250919
  • Livox-mid-360录制的.lvx2文件转化为.bag文件(TBC)
  • 【 svn】自动重试: cleanup + update
  • 有哪些Java学习书籍推荐?
  • 机动车登记证 OCR 识别:让车辆业务办理驶入 “快车道“
  • 在QT中使用FFmpeg实现录屏功能
  • 使用redisson实现延迟队列
  • 算法面试(1)-----两阶段检测器(如Faster R-CNN)和单阶段检测器(如YOLO、SSD)的区别与优劣?
  • 10cm钢板矫平机:一条“钢铁传送带”上的隐形战场