有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。

#include <iostream>
#include <algorithm>
#include <cstring>
#define MaxObjNum 100
#define MaxPackageVolume 100000
using namespace std;
int ObjNum, PackageVolume;
int ObjWeight[MaxObjNum], ObjVal[MaxObjNum];
int BackUp[MaxPackageVolume][MaxObjNum];
int DynamicProgramming(int RemainV, int pos) {int ReturnVal;if (BackUp[RemainV][pos] != -1)ReturnVal = BackUp[RemainV][pos];else if (pos == 0) {if (RemainV >= ObjWeight[pos])ReturnVal = ObjVal[pos];elseReturnVal = 0;}else if (RemainV >= ObjWeight[pos])ReturnVal = max(DynamicProgramming(RemainV - ObjWeight[pos], pos - 1) + ObjVal[pos], DynamicProgramming(RemainV, pos - 1));elseReturnVal = DynamicProgramming(RemainV, pos - 1);BackUp[RemainV][pos] = ReturnVal;return ReturnVal;
}
int main() {memset(BackUp, -1, sizeof(BackUp));cin >> PackageVolume >> ObjNum;for (int i = 0; i < ObjNum; ++i) {cin >> ObjWeight[i] >> ObjVal[i];}cout << DynamicProgramming(PackageVolume, ObjNum - 1) << endl;return 0;
}

转载于:https://www.cnblogs.com/ray-coding-in-rays/p/6512066.html

动态规划---01背包问题相关推荐

  1. 动态规划—01背包问题

    原文作者:弗兰克的猫 原文地址:[动态规划]01背包问题 摘要: 01背包问题:n个物品放入容量为c的背包中. 常见解法: 分治法:递归计算,且存在重复计算的bug 自上而下填表法:从大到小使用递归计 ...

  2. 动态规划——0-1背包问题

    文章出处:极客时间<数据结构和算法之美>-作者:王争.该系列文章是本人的学习笔记. 1 0-1背包问题 背包能够承受的总重量一定w,每个物品的总量不同int[] weight表示.怎么放才 ...

  3. 动态规划——01背包问题 看此一篇文章就够了

    本文讲述经典算法--动态规划的 常见问题 01背包  一篇文章带你学会01背包问题,妈妈再也不担心我遇到01背包了!!! 问题描述 有n个物品,它们有各自的体积和价值,现有给定容量m的背包,如何让背包 ...

  4. 动态规划---01背包问题(2种方法)

    一.动态规划 代表一类问题(最优子结构或子问题最优性)的一般解法,是设计方法或者策略,不是具体算法 本质:递推,核心是找到状态转移的方式,写出dp方程. 解决问题:交叉,重叠子问题(最优子问题) 形式 ...

  5. 动态规划01背包问题入门学习,详细笔记,推荐阅读

    问题描述: 给定N种物品和一个背包.物品i的重量是Wi,其价值位Vi ,背包的容量为C.问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大?? 在选择物品的时候,对每种物品i只有两种选择, ...

  6. python实现动态规划0-1背包问题

    一.动态规划算法介绍 动态规划算法通常用于求解具有某种最优性质的问题.在这类问题中,可能会有许多可行解.每一个解都对应于一个值,我们希望找到具有最优值的解.动态规划算法与分治法类似,其基本思想也是将待 ...

  7. 详解动态规划01背包问题--JavaScript实现

    对其他动态规划问题感兴趣的,也可以查看 详解动态规划最少硬币找零问题--JavaScript实现 详解动态规划最长公共子序列--JavaScript实现 一开始在接触动态规划的时候,可能会云里雾里,似 ...

  8. 动态规划--01背包问题详解

    代码随想录day42和day43 动态规划 模块01背包问题 "即使到不了远方,心中也要有远方的模样." 文章目录 1. 01背包理论基础 1.1什么是背包问题 1.2二维dp数组 ...

  9. 1.动态规划--01背包问题

    动态规划 DP问题思考时候分成两大部分考虑 1. 状态表示 f(i,j) (1) 集合:(所有选法的集合) 所有选法 条件: 1.从前i个物品中选 2. 总体积m<=j (2) 属性 最大值.最 ...

  10. 动态规划-01背包问题

    大佬整理的理解链接:(建议先看一遍自行理解DP思想再去看代码) 动态规划之01背包问题 - kkbill - 博客园01背包问题 问题描述: 给定 n 件物品,物品的重量为 w[i],物品的价值为 c ...

最新文章

  1. 嵌套的Try-Catch块--------异常处理(3)
  2. ECCV 2020 《Improving One-stage Visual Grounding by Recursive Sub-query Construction》论文笔记
  3. css之px自动转rem—sublime 插件CSSREM
  4. Json.Net系列教程 3.Json.Net序列化和反序列化设置
  5. 马斯克证实:特斯拉将加大在中国的投资和研发力度
  6. 文本文件与二进制文件
  7. 能力风暴智能机器人编程实例与vjc4.2的相关问题
  8. SXWIN7X64EN_20181104_NET_msu_LITE英文精简版
  9. 8uftp怎么下载客户文件,8uftp怎么实现下载客户文件
  10. 日程安排工具Calendso
  11. MAX232(电平转换:RS232-TTL)
  12. oa处理会签流程图_关于合同会签oa流程使用说明..doc
  13. 如何培养孩子的记忆力?猿辅导:这个方法家长一定要知道
  14. Cytoscape.js style属性详解
  15. 快速正确的搭建一个微服务架构需要了解的那几个点
  16. 2.04 标志寄存器
  17. Statsmodels库----统计建模和计量经济学
  18. wechat4j开发-菜单创建
  19. Docker实现SpringBoot项目的快速构建(二)
  20. 图像相似度比较算法总结

热门文章

  1. 如何使用Python进行单元测试
  2. MongoDB怎么做性能测试,看看这篇大神总结
  3. php根据类名字符串,PHP 5.5 新特性 ::class 获取类名字符串
  4. how to use automake to build files
  5. 4复数与复变函数(四)
  6. 利用Applet类和Runnable接口实现滚动字幕
  7. 正在搜索开发人员模式安装包_每个 Java 开发人员都应该知道的 10 个基本工具...
  8. 从零开始刷Leetcode——数组(122.167.169)
  9. 转行算法,90%的人还没开始就错在了这1步
  10. YOLOv2检测过程的Tensorflow实现