一、引言:
在我们学习了算法之后,我们一定遇到过贪心算法。而在贪心算法中就有着这样一个经典的例子——凑钱。
Eg:
你有面额为10、5、1的纸币,当你买菜时需要花费26元,请问需要最少的纸币张数是多少。
当我们用贪心算法去解决这个问题的时候,我们很简单的就得到了这样一个答案:10元两张、5元一张、1元一张。这里我们来回顾下是怎么得到的——按照贪心的思想,我们要先用面额最大的纸币来凑,这样我们就得到了26-2*10=6;得到剩余需要的钱后再接着用面额最大的来凑,最后的结果为:
26-10*2=6;——2张
6-5=1;——1张
1-1=0;——1张
所以总共花了4张纸币。
但是当我们遇到些特殊的例子呢?
Eg:你有11、5、1三种面额的纸币,当你买菜花费了15元,你该如何支付使得花费的纸币张数最少呢?
上述这个例子如果我们用贪心的思想去做的话得到的结果如下:
15-11=4;——1张
4-1*4=0;——4张
所以总共花费了五张;
<