1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > C++编程笔记:贪心算法实现部分背包问题

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

时间:2022-06-07 10:48:26

相关推荐

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

问题描述:

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

细节须知:

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

算法原理:

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

程序设计思路:

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

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

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

时间复杂性分析:

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

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

博客园:Weisswire

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。