部分背包问题解决方案:如何实现最高价值选择与算法设计
问题描述:
在某些背包问题中,可以拿走项目的任何部分,而不必拿走整个项目。在从给定的项目中选择的背包总重量有限的情况下,这用于找到最佳(最高总价值)选项。
细节:
它在同一文件夹中输出到两个文本文件,名称为:“ Backpack-object.txt”和“ Backpack-weight.txt”。
算法原理:
首先找出所有项目的单位重量值,然后从大到小。其次,首先先对项目进行排序,直到无法将其完全加载到背包中,然后填充背包以填补背包的总重量,以找到最有价值的选择。
编程想法:
①数据结构:项目序列号,项目的重量,项目的值和项目的单位重量存储在结构中;
②使用C ++提供的排序功能根据项目的单位权重值以降序排列结构;
③首先先对项目进行排序,直到无法将其完全加载到背包中,然后将其中一部分放入背包中以填补背包的总重量,以找到最有价值的选择。
时间复杂性分析:
首先,有必要对项目的输入单位权重值进行排序,这需要O(nlogn)时间。其次,当输入项目以本项目的单位权重值排列的顺序排列时,该算法仅需要θ(n)的时间来选择n个项目,以便算法可以找到最高的值选择。
可以将生成的数据导入到Excel中以进行数据分析以生成分析图。
博客公园:Weisswire
如果您想在程序员的职业生涯中取得更高的成就,C/C ++是一种编程语言,可以增强您的思维能力并为编程奠定坚实的基础。如果您想进行软件开发并成为核心程序员,如果您学习C/C ++,我将有一个C/C ++编程组成千上万的人(Q第京语:C语言编程学习聚会场所(Silent Apporting Place)),如果您认为很难由您自己学习C/C ++语言,那些对您有兴趣或了解C/C ++的朋友可以进行C/C ++编程。