背包问题--贪心算法C#Demo解析

Posted 天赋吉运科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了背包问题--贪心算法C#Demo解析相关的知识,希望对你有一定的参考价值。

01

概述

        贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 
        个人对贪心算法的理解是:贪心是有条件的,我们也常说贪心策略选择,具有一定的时效性。而通常,基于选择的性质,往往贪心算法会做一个排序。

02

性质

 • 最优子结构 
        当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。运用贪心策略在每一次转化时都取得了最优解。

 • 贪心选择 
        贪心选择是指所求问题的整体最优解,可以通过一系列局部最优的选择;例如背包问题中,我们放物品可以选择按物品价值最大的先放;可以选择按重量最小的物品来放;我们可以选择单位重量的价值最大来访。。。我们从局部最优解,扩展到整体最优解。

03

解题步骤

 • 1. 数学模型

 • 2. 分解成子问题

 • 3. 局部最优

 • 4. 局部最优到整体最优

04

贪心VS动态规划

        这种算法很相似,传送门:之前自己总结的动态规划的内容,于是将他们比较了一下,同时借助了一下思维导图,如下(大家拍砖斧正): 

背包问题--贪心算法C#Demo解析

05

C#  Demo

         自己顺了一遍之后,用C#实现了一下贪心算法,路过的小伙伴多提建议,其中进行简单排序的地方,用了一下堆排序,顺便温习一下堆排序时间复杂度:O (nlgn)。我们一起学习,共同进步~

背包问题--贪心算法C#Demo解析
背包问题--贪心算法C#Demo解析
背包问题--贪心算法C#Demo解析
背包问题--贪心算法C#Demo解析

运行的结果如下,页面有些丑,这次的侧重点在逻辑上,望见谅~ 

背包问题--贪心算法C#Demo解析

06

感受

        算法,很大的程度上锻炼自己的逻辑思考,最近研究算法这方面的感受深刻,严谨的小伙伴,在算法的路上不断精进。

联系我们

        没有教不好的学生

        只有不会教的老师

        大米时代(北京)教育科技有限公司

        座机:010-51292788

                    0316-5552070

        手机(微信):15831639058


        邮箱:3460307818@qq.com

        编辑:十四期 张伟杰


以上是关于背包问题--贪心算法C#Demo解析的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 【贪心算法】背包问题【4.2】

贪心算法背包问题

贪心算法解决背包问题?

贪心算法_01背包问题_Java实现

c语言背包问题,求高手解答

背包问题(贪心算法)