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

【动态规划】0-1背包问题(滚动数组篇)

简单的0-1背包问题滚动数组

原理

所谓滚动数组其实就是把二维dp数组换成了一维dp数组
因为关键的步骤

dp[i][j]=max(dp[i-1][j],dp[i-1][j-weight[i]]+value[i])

只要把第i-1行的数据及时赋给第i行,就可以少一维数据
也就是:

dp[j]=max(dp[j],dp[j-weight[i]]+value[i])

代码

#include <bits/stdc++.h>
using namespace std;int main() {int n,vol;int j,k;cin>>n;cin>>vol;vector<int> weight(n,0);vector<int> value(n,0);for(int i = 0; i < n; i++) {cin >> weight[i];}for(int j = 0; j < n; j++) {cin >> value[j];}vector<int> dp(vol+1);//初始化dp[0]dp[0]=0;for(int i=0;i<n;i++){for(j=vol;j>=weight[i];j--){dp[j]=max(dp[j],dp[j-weight[i]]+value[i]);}}cout<<dp[vol];return 0;
}

http://www.mrgr.cn/news/41369.html

相关文章:

  • V3D——从单一图像生成 3D 物体
  • OpenAI 推理模型 O1 研发历程:团队访谈背后的故事
  • 代码随想录Day24
  • 基于元神操作系统实现NTFS文件操作(二)
  • Linux 进程优先级
  • 【Python】CSVKit:强大的命令行CSV工具套件
  • 基于ssm的学生社团管理系统 社团分配系统 社团活动调度平台 学生社团管理 信息化社团管理开发项目 社团活动管理 社团预约系统(源码+文档+定制)
  • 图解C#高级教程(四):协变、逆变
  • Spring注解系列 - @Autowired注解
  • express,生成用户登录后的 token
  • Golang 服务器虚拟化应用案例
  • 什么是 LDAC、SBC 和 AAC 音频编码技术
  • 【不看会后悔系列】排序之——文件归并【史上最全详解】~
  • 【在Linux世界中追寻伟大的One Piece】System V共享内存
  • FreeRTOS篇4:任务调度
  • python numpy np.fromstring方法介绍
  • C++七种异常处理
  • 练习题 - DRF 3.x Validators 验证使用示例和配置方法
  • 命令按钮QLink
  • 记一次RCE漏洞的利用