这里主要实现路径记录,只求最值问题移步

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++实现及路径记录相关推荐

  1. 经典背包问题 01背包+完全背包+多重背包

    01 背包 有n 种不同的物品,每个物品有两个属性,size 体积,value 价值,现在给一个容量为 w 的背包,问最多可带走多少价值的物品. int f[w+1]; //f[x] 表示背包容量为x ...

  2. 01背包、完全背包、多重背包问题的C++实现

    01背包问题 容量为10的背包,有5种物品,每种物品只有一个,其重量分别为5,4,3,2,1,其价值分别为1,2,3,4,5. 设计算法,实现背包内物品价值最大. 代码如下(输出14) #includ ...

  3. 背包问题——01背包/完全背包/多重背包

    背包问题是典型的动态规划问题,本文将对典型的背包问题进行总结. 0-1背包问题 有 N 件物品和一个容量是 V 的背包.每件物品只能使用一次. 第 i 件物品的体积是 vi,价值是 wi. 求解将哪些 ...

  4. 动态规划之背包问题---01背包---完全背包---多重背包

    本篇博客是基于Carl大佬的刷题笔记 (代码随想录) 进行总结的 另外加入了我自己的一些整理,特此记录,以防遗忘 几种在面试中常见的背包,其关系如下: 通过这个图,可以很清晰分清这几种常见背包之间的关 ...

  5. 背包问题-【01背包】【完全背包】【多重背包】【多限定条件背包】

    背包问题 给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高. 可参考https://www.cnblogs.com/-guz/p/9866118.h ...

  6. 【python】一篇讲透背包问题(01背包 完全背包 多重背包 二维费用背包)

    面对背包问题,有一个很重要的方程式:状态转移方程式 所以每一种背包问题我都会给出状态转移方程式 #01背包 什么是01背包型问题? 先给大家感受一下01背包型问题: 给定n种物品和一背包.物品i的重量 ...

  7. 古有陈天华万字血书抗沙俄,今有本剧蒻万字背包虐dp(01,完全,多重,分组,混合等各种背包详解 + 板子题+ 奇奇怪怪滴变式题)

    前言: 本文介绍了01背包.完全背包.多重背包.混合背包.分组背包等背包,并对其进行透彻的剖析,并附上了板子题,供您白嫖,以及一些奇葩变式,颇有意思,供你琢磨玩弄.此外绝大部分题都有二维数组和滚动数组 ...

  8. 动态规划总结(01背包 完全背包 多重背包)

    动态规划总结(01背包 完全背包 多重背包) 一.学习资料 1.UVA DP 入门专题 2.夜深人静写算法(二) - 动态规划 3.算法之动态规划 4.什么是动态规划?动态规划的意义是什么? 5.01 ...

  9. java多重背包算法,【动态规划】多重背包问题

    说明 前面已经介绍完了01背包和完全背包,今天介绍最后一种背包问题--多重背包. 这个背包,听起来就很麻烦的样子.别慌,只要你理解了前面的两种背包问题,拿下多重背包简直小菜一碟. 如果没有看过前两篇0 ...

最新文章

  1. 用上Pytorch Lightning的这六招,深度学习pipeline提速10倍!
  2. Apache服务基础调优参数详解
  3. bash history 命令记录日志 实时发送到syslog server
  4. Codeforces Round #484 (Div. 2) A. Row
  5. 走近分形与混沌(part15)--有钱的人会愈来愈有钱,不一定是在于他们的能力,而是因为财富会产生财富
  6. matlab彩色图像缩放(双线性与双立方插值)
  7. ThinkPHP6项目基操(11.实战部分 部署后台静态页面模板及后台登录页面)
  8. UI设计进阶干货|切图命名
  9. ESP32+st7789/ili9341运行LVGL例程,依赖ESP-IDF编译lv_port_esp32官方Demo(1)
  10. paper reading:[renormalization]Semi-supervised Classification with Graph Convolutional Networks
  11. python discuz验证码_Python3简单验证码识别
  12. SQL Server生成含有数据的脚本文件
  13. 城市大数据及开放数据索引
  14. 无人驾驶相关文献阅读体会
  15. 2022年中青杯数学建模B题初步思路
  16. 如何训练神经网络的参数?,神经网络的参数计算
  17. 胃病患者饮食结构注意事项
  18. Python培训班多少钱
  19. 计算机无法启动怎么重装系统,电脑开不开机怎么重装系统教程
  20. Ansible Play book 实现网络自动化

热门文章

  1. CPA00 01 02
  2. zabbix server配置文件
  3. 窗体应用程序:四则运算
  4. 谈话《百度搜索引擎的网页质量白皮书》
  5. SAP 产品条码WMS结合 以及ABAP script的集成 BarCode
  6. truncate,delete,drop的异同点
  7. 面试官:自己搭建过vue开发环境吗?
  8. css 实现居中的五种方式
  9. JQuery中的省市联动
  10. Spring.NET 中的 ADO.NET 数据访问的示例