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

蓝桥杯19682 完全背包

问题描述

有 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

样例输出

10

说明

你可以选择 1 个第一个物品和 2 个第二个物品。

 

 

#include<iostream>
#include<algorithm>
using namespace std;const int N = 1e3+10;
int 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)  //遍历每个物品{//内层循环从v[i]到m正向遍历,这使得同一物品可以被多次选取for(int j=v[i]; j<=m; ++j){//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.xdnf.cn/news/7033.html

相关文章:

  • 【通用大模型】Serper API 详解:搜索引擎数据获取的核心工具
  • iOS 初识RunLoop
  • 用 UniApp 开发 TilePuzzle:一个由 CodeBuddy 主动驱动的拼图小游戏
  • SpringBoot项目里面发起http请求的几种方法
  • EMQX开源版安装指南:Linux/Windows全攻略
  • 连续概率分布 (拉普拉斯分布)
  • Flink 的水印机制
  • 第三十七节:视频处理-视频读取与处理
  • PostGIS实现矢量数据转栅格数据【ST_AsRaster】
  • FFmpeg:多媒体处理的终极利器
  • 有哪些GIF图片转换的开源工具
  • Neo4j数据库
  • spark数据处理练习题详解【上】
  • 【AGI】大模型微调数据集准备
  • leetcodehot100刷题——排序算法总结
  • ubuntu18.04通过cuda_11.3_xxx.run安装失败,电脑黑屏解决办法
  • FastDFS分布式文件系统架构学习(一)
  • 给个人程序加上MCP翅膀
  • React Flow 边事件处理实战:鼠标事件、键盘操作及连接规则设置(附完整代码)
  • 数据脱敏-6种方案,你选哪种?
  • web系统安全管理
  • Ubuntu22.04开机运行程序
  • ubuntu 安装mq
  • JUC入门(一)
  • 【MYSQL】笔记
  • 多用途商务,电子产品发布,科技架构,智能手表交互等发布PPT模版20套一组分享
  • C++函数基础:定义与调用函数,参数传递(值传递、引用传递)详解
  • JAVA SE 多线程(上)
  • Linux编译rpm包与deb包
  • ACL完全解析:从权限管理到网络安全的核心防线