题目
有1元、2元、5元、10元、20元、50元、100元的钞票无穷多张。现使用这些钞票支付x元,最少需要多少张?
例如,X=628最佳支付方法:
6张100块的,1张20块的,1张5块的,1张2块的,1张1块的;共需要6+1+1+1+1=10张。
思路
直觉告诉我们:尽可能多的使用面值较大的钞票!
贪心法:遵循某种规律,不断贪心的选取当前最优策略的算法设计方法。
证明
为何这么做一足是对的?
面额为1元、2元、5元、10元、20元、50元、100元,每个面额是比自己小的面额的2倍或以上。
所以当使用一张较大面额钞票时,若用较小面额钞票替换,需要两张或更多的钞票!
例如:
2=1+1
5=2+2+1
10=5+5
20=10+10
50=20+20+10
100=50+50
故,当前最优解即为全局最优解,贪心成立!
思考:如果增加7元面额,贪心还成立吗?
不成立。例如14=7+7,14=10+4*1。因为不满足上面的倍数关系。