python 分而治之 找零数量 最小组合
def dc(num,dic):
# 分而治之,最少的钱数组合
kind = [100,50,20,10,5,1] # 钱的面额
if num == 0:
return dic
else:
for k in kind:
if num>=k:
num = num - k
if k in dic:
dic[k]+=1
else:
dic[k] = 1
return dc(num,dic)
dic = dc(63,{})
print(dic)
分析:找零钱的时候,先找零最大面值的钱,比如63块钱,先找零50,剩余13,对于剩余的零钱,再次比对,再找出最大面值的钱10,剩3块,以此类推。