01背包、完全背包、多重背包问题的C++实现及路径记录
这里主要实现路径记录,只求最值问题移步
01背包、完全背包、多重背包问题的C++实现
以下均打印输出路径,即装入背包的物品序号,和最大值。
01背包问题
#include <iostream>
#include<algorithm>using namespace std;int main()
{int total_weight = 10;int w[6] = { 0,5,4,3,2,1 };int v[6] = { 0,1,2,3,4,5 };int dp[11] = { 0 };int path[6][11] = { 0 };for (int i = 1; i <= 5; i++)for (int j = 10; j >= w[i]; j--)if (dp[j] < dp[j - w[i]] + v[i]){dp[j] = dp[j - w[i]] + v[i];path[i][j] = 1;}int i = 5, j = 10;while (i > 0 && j > 0){if (path[i][j] == 1){cout << i << ' ';j -= w[i];}i--;}cout << endl;cout << "总的价值为: " << dp[10] << endl;return 0;
}
完全背包问题
#include <iostream>
#include<algorithm>using namespace std;int main()
{int total_weight = 10;int w[6] = { 0,5,4,3,2,1 };int v[6] = { 0,1,2,3,4,5 };int dp[11] = { 0 };int path[6][11] = { 0 };for (int i = 1; i <= 5; i++)for (int j = w[i]; j <= 10; j++)if (dp[j] < dp[j - w[i]] + v[i]){dp[j] = dp[j - w[i]] + v[i];path[i][j]=1;}int i = 5, j = 10;while (i > 0 && j > 0){if (path[i][j] == 1){cout << i << ' ';j -= w[i];}elsei--;}cout << endl;cout << "总的价值为: " << dp[10] << endl;return 0;
}
多重背包问题
#include <iostream>
#include<algorithm>using namespace std;int main()
{int total_weight = 10;int w[6] = { 0,5,4,3,2,1 };int v[6] = { 0,1,2,3,4,5 };int cot[6] = { 0,1,2,1,2,1 };int dp[11] = { 0 };int path[6][11] = { 0 };for (int i = 1; i <= 5; i++)for (int k = 1; k <= cot[i]; k++)for (int j = 10; j >= w[i]; j--)if (dp[j] < dp[j - w[i]] + v[i]){dp[j] = dp[j - w[i]] + v[i];path[i][j] = 1;}int i = 5, j = 10;while (i > 0 && j > 0){if (path[i][j] == 1&&cot[i]){cout << i << ' ';j -= w[i];cot[i]--;}elsei--;}cout << endl;cout << "总的价值为: " << dp[10] << endl;return 0;
}
01背包、完全背包、多重背包问题的C++实现及路径记录相关推荐
- 经典背包问题 01背包+完全背包+多重背包
01 背包 有n 种不同的物品,每个物品有两个属性,size 体积,value 价值,现在给一个容量为 w 的背包,问最多可带走多少价值的物品. int f[w+1]; //f[x] 表示背包容量为x ...
- 01背包、完全背包、多重背包问题的C++实现
01背包问题 容量为10的背包,有5种物品,每种物品只有一个,其重量分别为5,4,3,2,1,其价值分别为1,2,3,4,5. 设计算法,实现背包内物品价值最大. 代码如下(输出14) #includ ...
- 背包问题——01背包/完全背包/多重背包
背包问题是典型的动态规划问题,本文将对典型的背包问题进行总结. 0-1背包问题 有 N 件物品和一个容量是 V 的背包.每件物品只能使用一次. 第 i 件物品的体积是 vi,价值是 wi. 求解将哪些 ...
- 动态规划之背包问题---01背包---完全背包---多重背包
本篇博客是基于Carl大佬的刷题笔记 (代码随想录) 进行总结的 另外加入了我自己的一些整理,特此记录,以防遗忘 几种在面试中常见的背包,其关系如下: 通过这个图,可以很清晰分清这几种常见背包之间的关 ...
- 背包问题-【01背包】【完全背包】【多重背包】【多限定条件背包】
背包问题 给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高. 可参考https://www.cnblogs.com/-guz/p/9866118.h ...
- 【python】一篇讲透背包问题(01背包 完全背包 多重背包 二维费用背包)
面对背包问题,有一个很重要的方程式:状态转移方程式 所以每一种背包问题我都会给出状态转移方程式 #01背包 什么是01背包型问题? 先给大家感受一下01背包型问题: 给定n种物品和一背包.物品i的重量 ...
- 古有陈天华万字血书抗沙俄,今有本剧蒻万字背包虐dp(01,完全,多重,分组,混合等各种背包详解 + 板子题+ 奇奇怪怪滴变式题)
前言: 本文介绍了01背包.完全背包.多重背包.混合背包.分组背包等背包,并对其进行透彻的剖析,并附上了板子题,供您白嫖,以及一些奇葩变式,颇有意思,供你琢磨玩弄.此外绝大部分题都有二维数组和滚动数组 ...
- 动态规划总结(01背包 完全背包 多重背包)
动态规划总结(01背包 完全背包 多重背包) 一.学习资料 1.UVA DP 入门专题 2.夜深人静写算法(二) - 动态规划 3.算法之动态规划 4.什么是动态规划?动态规划的意义是什么? 5.01 ...
- java多重背包算法,【动态规划】多重背包问题
说明 前面已经介绍完了01背包和完全背包,今天介绍最后一种背包问题--多重背包. 这个背包,听起来就很麻烦的样子.别慌,只要你理解了前面的两种背包问题,拿下多重背包简直小菜一碟. 如果没有看过前两篇0 ...
最新文章
- 用上Pytorch Lightning的这六招,深度学习pipeline提速10倍!
- Apache服务基础调优参数详解
- bash history 命令记录日志 实时发送到syslog server
- Codeforces Round #484 (Div. 2) A. Row
- 走近分形与混沌(part15)--有钱的人会愈来愈有钱,不一定是在于他们的能力,而是因为财富会产生财富
- matlab彩色图像缩放(双线性与双立方插值)
- ThinkPHP6项目基操(11.实战部分 部署后台静态页面模板及后台登录页面)
- UI设计进阶干货|切图命名
- ESP32+st7789/ili9341运行LVGL例程,依赖ESP-IDF编译lv_port_esp32官方Demo(1)
- paper reading:[renormalization]Semi-supervised Classification with Graph Convolutional Networks
- python discuz验证码_Python3简单验证码识别
- SQL Server生成含有数据的脚本文件
- 城市大数据及开放数据索引
- 无人驾驶相关文献阅读体会
- 2022年中青杯数学建模B题初步思路
- 如何训练神经网络的参数?,神经网络的参数计算
- 胃病患者饮食结构注意事项
- Python培训班多少钱
- 计算机无法启动怎么重装系统,电脑开不开机怎么重装系统教程
- Ansible Play book 实现网络自动化