【动态规划法】0-1背包问题

简介: 【动态规划法】0-1背包问题

  问题如下:

问题描述:

给定n个重量为wi,价值为vi的物品(i=1,2,…,n),以及一个重量为W的背包,找出其中最有价值的物品子集,并且能全部放入背包中。

输入样例:(第一行是背包重量上限,第二、三、四、五行是物品的重量和价值)

10

7 42

3 12

4 40

5 25

输出样例:(能够放入背包的物品最大价值)

65

代码如下:

#include <iostream>
#include <algorithm>//max()函数头文件 
#include <cstring>//memset函数头文件 
using namespace std;
#define N 100
int main(){
  int dp[N][N];
  memset(dp,0,sizeof(dp)); 
  int n=4;//共四件物品 
  int BagMax;cin>>BagMax;//输入背包最大容量 
  int height[N];int value[N];//物品重量数组,物品价值数组 
  int MaxValue=0;
  for(int i=1;i<=n;i++){//应该从1开始,下方初始化操作dp[i][j]=dp[i-1][j];  i需要>=1 
    cin>>height[i]>>value[i];//输入物品的重量、价值 
  } 
  for(int i=1;i<=n;i++){//仅对i个物品选择  
    for(int j=0;j<=BagMax;j++){//穷尽背包空间 
      dp[i][j]=dp[i-1][j];//初始化
      if(height[i]<=j){//第i个物品重量在背包可容纳范围内 
        dp[i][j]=max(dp[i-1][j],dp[i-1][j-height[i]]+value[i]);
        if(dp[i][j]>MaxValue){MaxValue=dp[i][j];} 
      } 
    }
  } 
  cout<<MaxValue<<endl;
  return 0;
}

image.gif


目录
相关文章
|
存储 缓存 NoSQL
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
330 4
|
JavaScript
vue 3 element组件el-image的坑
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃ 发现了这个坑,立马来发个文章水一水
583 0
|
安全 测试技术 Python
零操作,高效下载:利用Playwright和Python完成文件下载
Playwright是Microsoft开发的跨浏览器自动化测试工具,能模拟用户操作,包括文件下载。在Python中,它提供`expect_download()`来处理文件下载,无需额外工具。下载开始时触发事件,完成后可通过`download.path()`获取路径。下载相关操作包括取消、删除、获取错误信息、所属页面、文件名、URL等。示例代码展示了如何下载pytest的压缩文件,简化了web自动化测试中的文件下载场景。
|
C语言 C++
C语言中特殊的指针[使用禁忌]
C语言中特殊的指针[使用禁忌]
114 0
基于socket实现java Swing简易聊天室[附完整源码]
基于socket实现java Swing简易聊天室[附完整源码]
225 1
|
移动开发 前端开发 网络协议
Python Web实时通信新纪元:基于WebSocket的前后端分离技术探索
【7月更文挑战第16天】WebSocket增强Web实时性,Python借助Flask-SocketIO简化实现。安装`flask`和`flask-socketio`,示例展示服务器端接收连接及消息并广播响应,前端HTML用Socket.IO库连接并监听事件。WebSocket开启双向通信新时代,助力动态Web应用开发。
205 1
汉诺塔?爬楼梯?斐波那契?知道递归就够了
汉诺塔?爬楼梯?斐波那契?知道递归就够了
160 0
|
Ubuntu Linux Docker
win10下的docker桌面端配置ubuntu进行访问
win10下的docker桌面端配置ubuntu进行访问
489 0
Ubuntu中如何查看mp4视频
ubuntu中都是命令行显示,我们要看mp4的话需要安装一些相应的插件,下面我做一个简要的介绍
Ubuntu中如何查看mp4视频
|
机器学习/深度学习 人工智能 弹性计算
2022云栖内容精选—AI助力新型电力系统建设
本篇内容主要分为三个部分: 1. “双碳”目标下的新型电力系统与挑战 2. 在电力预测、调度决策、虚拟电厂决策方向的创新与积累 3. 关于未来的产品展望
1546 1
2022云栖内容精选—AI助力新型电力系统建设