问题描述:

在部分背包问题中,可以不必拿走整个一件物品,而是可以拿走该物品的任意部分。以此求得在限定背包总重量,从给定的物品中进行选择的情况下的最佳(总价值最高)的选择方案。

细节须知:

分别输出到同文件夹下两个文本文件中,名称分别是:“backpack-object.txt”和“backpack-weight.txt”。

算法原理:

先求出所有物品的单位重量价值并进行由大到小的排序。其次从排序处于首位的物品开始选择直到无法完整装入背包的物品,将其部分装入背包以填满背包的总重量,从而求得价值最高的选择方案。

程序设计思路:

① 数据结构:结构体中存储物品序号、物品的重量、物品的价值、物品的单位重量价值;

② 利用C++自带的sort函数对结构体按照物品的单位重量价值进行降序排列;

③ 从排序处于首位的物品开始选择直到无法完整装入背包的物品,将其部分装入背包以填满背包的总重量,从而求得价值最高的选择方案。

时间复杂性分析:

首先,需要对输入的物品单位重量价值进行非减序排序,需要用O(nlogn)的时间。其次,当输入的物品已按物品单位重量价值非减序排列,算法只需θ(n)的时间选择n个物品,使算法可以求得价值最高的选择方案。

生成的数据可导入EXCEL中进行数据分析生成分析图表。

博客园:Weisswire

学习C/C++编程可以湫湫扫下方二维码,学习编程,码上开始!

C++编程笔记:贪心算法实现部分背包问题相关推荐

  1. 贪心算法|Greedy Algorithms(背包问题)

    贪心算法是一种用于优化问题的简单.直观的算法.该算法在寻找整体最优解的过程中,每一步都进行最优选择.贪心算法在一些问题上是非常成功的,例如用于压缩数据的霍夫曼编码,或者用于通过图寻找最短路径的Dijk ...

  2. 贪心算法 背包问题代码 c语言,用贪心算法求解普通背包问题的C++代码

    用贪心算法求解普通背包问题的C++代码 2019年3月6日 125次阅读 来源: 贪心算法 #include #define  M  100 void display(int &n,doubl ...

  3. 算法——贪心算法解0-1背包问题

    问题的描述 我们先根据一个贪心算法的经典应用实例,然后给出贪心算法的实现步骤与关键环节,最后给出C++代码求解0-1背包问题. 背包问题(Knapsack Problem):有NN件物品有一个承重(也 ...

  4. 挑战程序设计竞赛笔记-贪心算法

    2.2 贪心算法 贪心算法的精髓在于,遵循某种规则,不断地选取当前最优解. 硬币问题 假设有 1 元,5元,10元,50元,100元,500元的硬币C1,C5,C10,C50,C500枚,现在需要凑出 ...

  5. 第十六章 贪心算法——0/1背包问题

    1.问题描述: 给定n种物品和一背包.物品i的重量是wi,其价值为vi,背包的容量为C.问:应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 形式化描述:给定c >0, wi > ...

  6. 算法设计与分析(第四周)贪心算法、背包问题

    贪心算法 顾名思义,贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择.当然,希望贪心算法得到的最终结果也是整体最优的. 虽然贪心算 ...

  7. 贪心算法解决背包问题

    贪心算法解决背包问题 问题描述: 给定 n 个物品和一个容量为 C 的背包,请给出物品装入背包的方案,使得背包中物品的总价值 M 最大,并满足: 1.每个物品 I 的重量为 wi,价值为 vi. 2. ...

  8. 贪心算法的设计与实现“背包问题+活动安排”

    贪心法基本思想 求解最优化问题的贪心算法包含一系列步骤.每一步都在一组选择中做出在当前看 来最好的选择,希望通过做出局部优化选择达到全局优化选择.但贪心算法不一定总产 生优化解,所以一个贪心算法是否产 ...

  9. java贪心,java实现贪心算法

    并证明了贪心算法解决此问题的有效性,且进行了实例验证,并进 行了复杂度分析,此算法是解决资源组合规划问题较好的方法. 关键词:贪心算法;java 程序;复杂度分析;...... 数据结构与算法 实验名 ...

最新文章

  1. 安卓下拉刷新、上拉加载数据显示
  2. iView 发布 1.0 正式版,43 个 UI 组件助力中后台业务开发
  3. Picasso:开启大前端的未来
  4. 网站内链为什么要做上下文链接?对网站优化有什么帮助?
  5. EasyUI学习总结(五)——EasyUI组件使用
  6. C语言 读取字符串数组中的字符串并获取字符串的长度
  7. Qt学习之路(52): 拖放技术之一
  8. SiteMapCreator 发布 (Open Source)
  9. [SpringSecurity]web权限方案_自动登陆_原理分析和具体实现
  10. android手机什么架构图,从架构图看Android分为几层呢?
  11. c语言基础知识大全 pdf,c语言基础知识点概述.pdf
  12. ct上的img表示什么_X线/CT/MR影像片子上的标识你是否都认识?
  13. SAP SCC4 客户端设置的用法
  14. python把字符串转化为字典_python 将字符串转换为字典
  15. 2019 小米校招笔试题 小米大礼包
  16. 欧框语言框架标准C2,雅思成绩与欧洲语言共同参考框架的对应关系
  17. 图像处理之简单综合实例(大米计数)
  18. 3Dmax入门篇,常用快捷命令及两种基础建模方式,小白看了都会!
  19. Rodney Brooks: 我们需要更理性看待人工智能技术
  20. 基于人脸识别的人脸考勤机实现(训练、测试、部署)

热门文章

  1. 多媒体微型计算机必不可少的硬件,第1章计算机基础知识习题材料.doc
  2. pkcs1转pkcs8 php,openssl RSA密钥格式PKCS1和PKCS8相互转换
  3. java identifier expected,java – hibernate h2 embeddable list expected“identifier”
  4. linux下执行shell修改用户密码,[转] 关于linux下通过shell命令(自动)修改用户密码...
  5. python从爬虫到数据分析项目_零基础学习Python web开发、Python爬虫、Python数据分析,从基础到项目实战!...
  6. 进程 zabbix_Zabbix监控在windows的进程(非进程数)
  7. pyqt5 qscrollarea到达_pyqt5 QScrollArea设置在自定义侧(任何位置)
  8. HTML常用标签、特殊字符、路径
  9. myeclipse2019左侧工程目录字体的大小调整
  10. linux登录成功后提示信息