当前位置:网站首页>完全背包问题(动态规划)
完全背包问题(动态规划)
2022-08-02 03:28:00 【Aiolei】
1. 问题
有 n 个物品,它们有各自的重量 weight 和价值 value,现有给定容量 C 的背包,如何让背包里装入的物品具有最大的价值?每个物品能够使用多次。
2. 分析
需要求解的是:最大价值 MaxValue
约束条件:选择的物品总重量 < C
递推公式:如果 k ∗ w [ i ] < = j k * w[i] <= j k∗w[i]<=j 说明可以装入该物品,循环装进去 1,2,3…k 个,因此 d p [ i ] [ j ] = m a x ( d p [ i ] [ j ] , d p [ i − 1 ] [ j − k ∗ w [ i ] ] + k ∗ v [ i ] ) dp[i][j] = max(dp[i][j], dp[i-1][ j-k*w[i] ] + k * v[i]) dp[i][j]=max(dp[i][j],dp[i−1][j−k∗w[i]]+k∗v[i])
3. 代码
#include<iostream>
#include<cmath>
using namespace std;
int C; //背包容量
int number; //物品数量
int w[10], v[10]; //物品的重量和价值
int dp[10][15] = {
{
0}}; //保存价值的二维数组--动态规划
//找到最大价值
void MaxValue()
{
for(int i = 1;i < number;i++){
for(int j = 1;j <= C;j++){
for(int k = 0;k*w[i] <= j;k++){
dp[i][j] = max(dp[i][j],dp[i-1][j-k*w[i]]+k*v[i]);
}
}
}
}
int main()
{
cout<<"完全背包问题"<<endl;
cout<<"Please input the bag's capacity:";
cin>>C;
cout<<"Please input goods' number:";
cin>>number;
cout<<"Please input goods' weight:";
for(int i = 1;i <= number;i++){
//注意:i从1开始
cin>>w[i];
}
cout<<"Please input goods' value:";
for(int i = 1;i <= number;i++){
cin>>v[i];
}
MaxValue(); //找到最大价值 -- 动态规划
cout<<"\n(1)动态规划\nThe bag's max vlaue is :"<<dp[number-1][C]<<endl;
cout<<"The values of dp[][] are as follows:\n";
for(int i = 0;i < number;i++){
//输出dp数组
for(int j = 0;j <= C;j++){
cout<<dp[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
4. 效果

边栏推荐
- Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset I3D论文精读
- SGDP(1)——猜数字游戏
- View与ViewGroup
- 账务处理程序、记账凭证账务处理程序、汇总记账凭证账务处理程序、科目汇总表账务处理程序、会计信息化概述、信息化环境下会计账务处理的基本要求(此章出1道小题)
- OpenCore 黑苹果安装教程
- mysql 原生语句点滴学习记录
- 【泰山众筹】模式为什么一直都这么火热?是有原因的
- Visual Studio2022创建setup项目
- 财产清查概述、 全面清查的情况、局部清查的情况、财产清查的方法、财产清查结果的处理
- 管理node版本的工具volta
猜你喜欢

公司产品太多了,怎么实现一次登录产品互通?

Windows下MySQL数据库报“ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:8000‘ (10061)”错误解决

广告电商「私域打工人」职业前景:你离月薪6万,还差多远?
![[Hello World教程] 使用HBuilder和Uni-app 生成一个简单的微信小程序DEMO](/img/98/7ad7fcee0deaaa92446098d1d99dc3.png)
[Hello World教程] 使用HBuilder和Uni-app 生成一个简单的微信小程序DEMO

18张图,直观理解神经网络、流形和拓扑

解决composer安装太慢 更换国内镜像

链动2+1无限循环系统,2022年起盘成功率超高的模式

ArrayList LinkList效率对比

关于我的项目-微信小程序2(uniapp->wx小程序)

关于我的数学建模~
随机推荐
功能强大的黑科技网站--10连
无源域适应(SFDA)方向的领域探究和论文复现(第二部分)
[Spark]-LSH局部敏感哈希
Win10 解决AMD平台下SVM无法开启的问题
中国大陆开源镜像站汇总
Solve the problem that the 5+APP real machine test cannot access the background (same local area network)
ontop-vkg 学习1
laravel 查询数据库获取结果如何判断是否为空?
阿里技术官手码12W字面试小册
Kotlin - 标准函数(with、run和apply)
3D建模作品
[Spark]-RDD详解之变量&操作
什么是广告电商商业模式?这几个门派告诉你
【opencv】error: (-215:Assertion failed) ssize.empty() in function ‘cv::resize‘报错原因
清理c盘爆满告急,C盘清理
The first time to tear the code by hand, how to solve the problem of full arrangement
面试知识点整理:Skia 架构的场景渲染
元宇宙是一个炒作的科幻概念,还是互联网发展的下半场?
大厂底层必修:“应用程序与 AMS 的通讯实现”
Syncthing文件同步方案完全攻略(亲测有效)