第六篇:从贪心算法理解程序的算法

Posted 使用Python玩转数学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六篇:从贪心算法理解程序的算法相关的知识,希望对你有一定的参考价值。


本文利用找零问题的贪心算法,来理解程序的算法。在内容安排上,先来使用贪心算法做一个练习,然后和同学们一起讨论一下自动售票的找零是如何实现的,最后再说一说程序算法。


一个贪心算法的练习

第六篇:从贪心算法理解程序的算法

贪心算法的核心就是在解决问题的步骤中,每一个步骤都选择当前的最优解,不考虑整体。解决问题的最优解就是人们对问题最满意的解法。既然我们要求使用最多的零钱数量来找零,我们可以先从面值最小的硬币开始组合,因此可以使用贪心算法。下面给出问题的解决步骤。

首先选用面值最小的硬币。选用面值最小的硬币可以保证用最多的硬币数量来找零,1角硬币只有5枚,可以全部选择,剩余8角硬币。然后再选用4枚2角的硬币,硬币面值组合为13角,即1.3元,共需要9枚硬币。


第六篇:从贪心算法理解程序的算法


使用贪心算法找1.3元零钱,一共分两个步骤:

第六篇:从贪心算法理解程序的算法


用贪心算法解决找零问题,需要满足下面几个条件:
(1)需要有一定数量、不同面值的硬币。例如前面的1角、2角、5角、10角硬币各5枚;
(2)需要有求局部最优解的执行过程、或者计算过程。例如前面找零问题的两个执行步骤;
(3)需要输出结果。例如前面找零问题的硬币组合结果。

第六篇:从贪心算法理解程序的算法


自动售票机的找零

不知道同学们做过火车或地铁没有,现在火车站或地铁车站都有自动售票机,把购票的纸币输入到自动售票机,自动售票机会根据购票金额进行找零,下面我们就来探寻一下自动售票机找零的内幕。

第六篇:从贪心算法理解程序的算法


第六篇:从贪心算法理解程序的算法


使用自动售票机购票,当你买好票要付款时,你可以把现金竖着放入到自动售票机的条形孔中,自动售票机会自动把现金吸取到自动售票机中,现金只能一张一张放入,现金放入完成后。自动售票机会识别你放入的现金金额,如果现金金额不足给出金额不足提示。如果现金金额大于所购车票金额,自动售票机会计算现金金额与所购车票金额的差值,然后开始找零。

自动售票机找零过程使用的就是贪心算法。在自动售票机中,一般会存储1元硬币、5角硬币、1角硬币各若干枚。在找零过程中,它会先使用自动售票机内存储的面值最大的硬币,再依次选用面值次之的硬币,直至符合找零的钱数,最后通过出币口将零钱找给购票者。

第六篇:从贪心算法理解程序的算法

自动售票机的找零过程既然是用的贪心算法。同学们可能就要问了,自动售票机是如何用贪心算法来找零的呢?在找零过程中我们会通过眼睛来发现面值最大的硬币,然后对硬币进行组合。计算机是如何发现面值最大的硬币呢?它又是怎么来组合硬币的呢?

要揭开这些谜团,这就需要我们来进一步了解算法。

第六篇:从贪心算法理解程序的算法

自动售票机的找零过程实际就是模仿人来找零的过程,这应该涉及到AI了,也就是人工智能,在这里我们不谈AI,要谈也是以后谈,当我们具备更多的知识后再谈。

自动售票机没有眼睛,它不能像人一样直接去识别硬币的面值。但人类是聪明的,人类可以把不同面值的硬币放置到自动售票机的不同硬币盒中,每个硬币盒都放置相同面值的硬币,这些硬币盒放置的硬币构成了贪心算法的输入。贪心算法会知道每个硬币盒放置的面值大小,这都是在算法中安排好的。

第六篇:从贪心算法理解程序的算法

当它开始找零时,它会先从存有最大面值的硬币盒中取出硬币,在取硬币之前,它会先计算需要多少个面值最大的硬币,然后再依次从面值次之的硬币盒中取出硬币,计算过程也都是在算法中安排好的。这个取硬币的过程和人在找零过程中的行为是一样的。

第六篇:从贪心算法理解程序的算法


当找零的硬币都准备好后,它会启动输出装置,把取出的硬币通过输出装置输出到取硬币口,人们通过取硬币口就可以取到找零的硬币了。

从自动售票机的找零过程,我们可以看到:算法需要有输入、计算过程、还要有输出。在自动售票机的找零算法中,算法的输入就是放置在硬币盒中的硬币面值和硬币数量。计算过程就是根据找零的钱数来计算需要从不同硬币盒中取出硬币的数量,这个计算过程会分成多个步骤,依次从最大面值到最小面值的硬币盒中取出硬币。算法的输出就是把取出的硬币通过自动售票机的输出装置输出到取硬币口。

第六篇:从贪心算法理解程序的算法


程序算法

一个完整的程序算法由输入的数据(如前面的硬币)、有限的执行步骤(算法的执行过程只能是有限的步骤,不能无限制执行下去)和输出结果组成。

第六篇:从贪心算法理解程序的算法


算法的输入
算法的输入是算法要处理的数据。例如在自动售票机找零算法中,在硬币盒放置的硬币和要找的零钱数构成了算法的输入。再如在计算从1到10的累加和算法中,数字1、2、3、4、5、6、7、8、9、10构成了算法的输入。

第六篇:从贪心算法理解程序的算法

算法的执行过程
算法在解决问题的过程中,可以分成多个步骤来执行。例如,用贪心算法找零的第一步就是先用面值最大的硬币,当面值最大的硬币组合不能满足找的零钱数时;就要执行第二步再选用面值次之的硬币,如果还不能满足找的零钱数;就要执行第三步再选用面值更小的硬币,如果还不满足找零要求;就要执行第四步 ……;直至满足找零要求或者找不开零钱。不管问题是否能够解决,算法最终会在有限的步骤内结束。

第六篇:从贪心算法理解程序的算法

算法的输出
算法既然是要解决问题的,算法执行完成后,就要有解决问题的结果。不管是解决成功还是解决失败,算法都要给出结果。例如,在使用贪心算法解决找零问题中,算法给出的结果或者是找零成功,或者是找零失败。

算法的结果可以输出到电脑屏幕,也可以输出到打印机,当然还有其它输出设备。例如自动售票机,它的找零算法的输出就是出币口,把要找的零钱输出到出币口。


思考与练习


同学们应该知道如何计算长方形的面积吧。如果让计算机来计算长方形的面积,计算长方形面积的算法步骤有哪些呢?要求使用文字来描述计算长方形面积算法的步骤。

提示:算法的步骤有输入、计算过程和输出。



以上是关于第六篇:从贪心算法理解程序的算法的主要内容,如果未能解决你的问题,请参考以下文章

贪心算法第六篇:单调递增的数字 + 划分字母区间 + 合并线段区间

贪心算法,一个的吃货理解

贪心算法的理解

AcWing 算法基础课 第六讲 贪心 总结

背包问题(贪心算法)

贪心算法的简单理解