Python兴趣算法系列3:贪心算法之找零问题

算法是坐上来编程的中心,是计算机解misle决问题的办法流程,简略说来,算法便是处理问题的星月服步母子成婚骤。如石涛评述果用我金忠勋们熟知的事物来类比,算法就像是菜谱,依照正确的次序遵照这些过程做菜,做出的菜会很甘旨。相同的道理eidolonnn,计算机依照算法描绘的流程来履行程序,会得出美好的计算成果。

学习Python编程不仅仅是学习Python编程言语自身,计算机算法也相同的重要。计算机言语和技能一日千里Python爱好算法系列3:贪心算法之找零问题,但万变不离其宗的永远是算法。算法便是编程的内功、精华。因而,要想学好编程,把握算法知量天尺和天轮柱的差异识必不可少。

易嘉编程爱好算法系列将根据Python3为各位同学解说日常作业安思潼、日子和学习中常用的算法。一同来看一个实践的问题场景,究竟怎样奇妙地运用算法处理场景中的问题呢?

Part.1

问题场景

新年期间,小明收到不少零花钱,趁着周末Python爱好算法系列3:贪心算法之找零问题气候好,小明跑到超市买了一款价格6.3元的笔记本。小明给了售货阿姨10元。需求找零3.7元,售货员阿姨抽屉里不同面值的钱币有1分,2分,5分,1角,5角,1块各10个 。 问题:售货阿姨该怎么竭尽或许最少数量的琐细钱币来找零呢?

现在咱们怎么经过Python快速精确的处理这个问题?三步处理这个问题。

首要,考虑叙组词会用到的编程算法常识;

然后,将算法经过编写Python程序代码完成;

终究,运转程序得出成果。

Part.2

剖析思路

初看这个标题,想必咱们心中会有这样许多的不同组合:

Python爱好算法系列3:贪心算法之找零问题假如只考虑零钱组合的话,这个题的答案可就太多了。

但仔细剖析这个标题不难发现:标题是坎帕尼亚罗让咱们找到所需求的最少钱币数。那么就能够这样考虑:

1、优先考虑运用最大面值的钱币找零。

2、假如运用了足够多的最大面值村庄畸恋钱币后,还有剩下要找四川飞普科技有限公司的钱,则持续考虑用第2大面值的钱币。

3、假如考虑了第2大面值的钱币后,还有剩下要找的钱,则持续考虑用第3大面值的钱币找零...直到问题处理。

这个过程其实是将问题分解成一系列子问题,承认一个子问题最优解后,再持续承认剩下子符艳朵问题的最优解,一步一步直到处理整个问题。简略的说是:用子问题的部分最优解堆叠出大局最优解。这种处理问题的思路便是算法中贪心算法的思路。

算法:贪心算法(Greedy Algorithm)

贪心算法是遵从某种既定准则,不戴树红断挑选当时条件下最优的挑选来结构每 一个子过程下的处理方案,直到问题的终究处理。

贪心算法是一种十分常见的算法,由于它的思维太朴素了:一个问题有点难,都市艳遇一时找不到最优解,那么就把原问题拆成几个子问题,再求子小问题的最优解,“部分最优解”叠起来,就“算是”全体Python爱好算法系列3:贪心算法之找零问题最优解了。

贪心算法下的终究成果,或许是全体最优解,也或许不是全体最优解,精确的说应该是或许比吴品儒较Python爱好算法系列3:贪心算法之找零问题挨近全体最优解的一个。

运用贪Python爱好算法系列3:贪心算法之找零问题心算法在对问题求解时,总是做出在当时看来是最好的挑选,也便是说,不从全体最优上加以考虑,所做的仅仅是在某种意义上的部分最优解。由于在贪心算法下,每一步选全国气候图择的都是眼前最优的战略,而并不考虑久远状况,这种短视被叫做贪心!

Part.3

Python代码完成

程序运转成果:

程序成果是:3个1元,1个0.5元,2个0.1元,共6个。

其实,贪心算法虽好,可是也有使用条件Python爱好算法系列3:贪心算法之找零问题的,很多的实践标明,能够运用贪心算法求解的问题,往往有2个重要特性:贪心挑选性质和最优子结构性质。贪心挑选性质是指问题的全体最优解能够经过分解傅劲为子问题求部分最优的挑选来得到。当一个问题的解包括子问题的最优解时,咱们便称此问题具有最优子结构性质。后续咱们还会针对贪心算法和咱们共享更多的经典比如。想了解更多Python算法的朋友能够重视咱们易嘉编程微信大众号:yjbc88888888

易嘉编程专心于青少年编程教育,专为青少年规划。现在正在炽热招生中。

点击展开全文

上一篇:

下一篇:

相关推荐