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

蓝桥杯19681 01背包

问题描述

有 N 件物品和一个体积为 M 的背包。第 i 个物品的体积为 vi​,价值为 wi​。每件物品只能使用一次。

请问可以通过什么样的方式选择物品,使得物品总体积不超过 M 的情况下总价值最大,输出这个最大价值即可。

输入格式

第一行输入两个正整数 N,M。(1≤N,M≤1000)

接下来 N 行,每行输入两个整数 vi,wi​。(0≤vi,wi≤1000)

输出格式

输出一个整数,表示符合题目要求的最大价值。

样例输入

4 5
1 2
2 4
3 4
4 5

样例输出

8

说明

你可以选择第二个物品和第三个物品。

 

 分别考虑前1~4个物品时,背包容量分别为1~5时的最大价值:

#include<iostream>
#include<algorithm>
using namespace std;const int N = 1e3+10;
int n, m;  //n件物品,体积为m 
int v[N], w[N];
int dp[N];  //dp[j]表示背包容量为j时的最大价值int main()
{cin>>n>>m;for(int i=1; i<=n; ++i) cin>>v[i]>>w[i];for(int i=1; i<=n; ++i)  //遍历每个物品{for(int j=m; j>=0; j--)  //逆向遍历背包容量,确保每个物品只被考虑一次{//如果当前物品能放入if(j>=v[i]){//不选当前物品:保持dp[j]不变//选当前物品:dp[j-v[i]] + w[i]dp[j] = max(dp[j], dp[j-v[i]] + w[i]);}} }cout<<dp[m];return 0;
}
http://www.dtcms.com/a/197809.html

相关文章:

  • Web开发-JavaEE应用SpringBoot栈SnakeYaml反序列化链JARWAR构建打包
  • linux本地部署ollama+deepseek过程
  • 职场方法论总结(4)-如何正确地汇报
  • 使用Python制作Lorenz吸引子的轨道生成视频
  • 《云端共生体:Flutter与AR Cloud如何改写社交交互规则》
  • 数字电子技术基础(六十)——使用Digital软件绘制脉冲触发的触发器
  • C++:static成员
  • 你引入的lodash充分利用了吗?
  • 封装、继承、多态的理解
  • 基于区块链技术的供应链溯源系统:重塑信任与透明度
  • 改进模糊C均值时序聚类+编码器状态识别!IPOA-FCM-Transformer组合模型
  • ESMFold在线预测蛋白质结构
  • ShenNiusModularity项目源码学习(26:ShenNius.Admin.Mvc项目分析-11)
  • 设备预测性维护的停机时间革命:中讯烛龙如何用AI重构工业设备管理范式
  • Linux518 YUM源仓库回顾(需查)ssh 服务配置回顾 特定任务配置回顾
  • 【驱动开发】一 字符设备驱动框架
  • tensorflow图像分类预测
  • IDEA - Windows IDEA 代码块展开与折叠(基础折叠操作、高级折叠操作)
  • 渗透测试流程-中篇
  • 5、事务和limit补充
  • Linux的内存泄漏问题及排查方法
  • 【通用智能体】Playwright:跨浏览器自动化工具
  • C++学习:六个月从基础到就业——C++20:协程(Coroutines)
  • 【Linux】ELF与动静态库的“暗黑兵法”:程序是如何跑起来的?
  • IDE/IoT/搭建物联网(LiteOS)集成开发环境,基于 LiteOS Studio + GCC + JLink
  • Ansible模块——文件内容修改
  • 【Linux】简易版Shell实现(附源码)
  • Day29 类的装饰器
  • PopSQL:一个支持团队协作的SQL开发工具
  • 机器学习(12)——LGBM(1)