Python实现找零兑换的三种解法
找零兑换
找零兑换问题最直接的解法就是贪心策略。 比如问题:有面值1、5、10、25的硬币,求解兑换63元所需的最少硬币数。
贪心策略的思想就是不断的利用面值最大的硬币去尝试,不行了,在尝试较小面值的硬币,该例中也即使用25的硬币去尝试,2枚25的硬币后,剩下13元,在面值为10的硬币1枚,最后用3枚1元的硬币,因此最少的硬币数为6枚。这种思想也类似于中学时天平实验,不断的用大点的砝码尝试使天平平衡。 但是贪心策略拥有明显的弊端,优先使用最大面值的硬币,未必能取得最好的结果,在该例中如果存在21元的面值,最优的解法应该是3枚21面值的硬币,而非6枚。
接下来,我们使用递归的思想解决找零兑换的问题。
一、递归解法
递归解法的核心思想: 递归思想其实类似于我们学单片机时的中断的概念,中断中最重要的三个环节是进入断点,执行中断子程序,以及断点恢复。不一样的地方在于递归调用的子程序是不断缩小规模的自身,因此,每
共有 0 条评论