对《算法之美-Python语言实现》8.5节 货币选择问题的实现记录
2021/8/11 20:08:36
本文主要是介绍对《算法之美-Python语言实现》8.5节 货币选择问题的实现记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
有时候,看作者写的代码容易懵逼。遇到一个问题,还是要自己先找到思路,然后自己实现出来才是上策。
#货币选择问题 def find_money(amount,moneys): """ 选择最少的货币表示,amount表示支付的金额,moneys为手上现有的纸币数量 返回值为一个列表,[[面额,选择此面额纸币的数量]] """ result=[] if amount<=0:#如果支付了0元 return result Moneys=sorted(moneys,key=lambda one:one[0],reverse=True)#按照面额从大到小排列钱 print("排序后的moneys序列:",Moneys) n=0 #从moneys开始遍历 while(True): if Moneys[n][0]>amount: n+=1 #当面额大于要支付的金额,查看下一个 continue if Moneys[n][0]<=amount: #找到了合适的最大金额 n索引 j=0 #j用于记录当前选择面额的数量 while(Moneys[n][1]>0 and amount>=Moneys[n][0]): #面值足够,且剩余待付金额>=面值时 amount=amount-Moneys[n][0] #减去一次面值 j+=1 #当前面值统计数量加1 Moneys[n][1]-=1 #当前钱包此面值数量-1 result.append([Moneys[n][0],j]) #跳出循环后,追加此次循环结果到result if amount==0: #如果当前待支付为0,说明付清 break n+=1 #索引移动到下一个面值 #如果当前待支付值为0,证明已经追加完毕 return result moneys=[[10,5],[5,2],[50,8],[20,3],[100,4],[2,11],[1,7]] #[面值,数量] print(find_money(552,moneys))
这篇关于对《算法之美-Python语言实现》8.5节 货币选择问题的实现记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享