Python贪心算法解决收银员找零问题
场景描述
在超市结账时,假设只有1分、5分、1角、3角、5角、1元的硬币,如果需要找零钱,给定需要找的零钱数目,使收银员找给顾客的硬币数量最少,运行程序如图:
知识补充
贪心算法是指在当前问题求解中,总是做出当前的最好选择,也就是局部最优解!使用贪心策略必须保证无后效性,也就是某个状态以后的过程不会影响到状态之前,同时局部最优策略可以产生全局最优解。
贪心算法一般的解决步骤是:
1.建立数学模型来描述问题;
2.把求解的问题分成若干个子问题;
3.对每一子问题求解,得到子问题的局部最优解;
4.把子问题的局部最优解合成原来问题的一个解。
定义函数功能
初始化收银员拥有零钱数
通过input得到每种零钱数量,定义收银员拥有的总零钱数,防止无法进行找零,同时确定各面值硬币的数量。
"""通过输入获取总零钱
"""
def new_coin():print("=====收银员总零钱统计=====")coin = [0.01, 0.05, 0.1, 0.5, 1.0]coin_num = []sum = 0for index, i in enumerate(coin):num = int(input('收银员{}面值硬币有几个?'.format(i)))coin_num.append(num)sum += i * numprint("收银员总零钱数:{0}".format(sum))return sum, coin, coin_num
编写找零
从最大硬币面值开始,计算这一类面值可以找多少金额,每一类面值硬币的找零数量就是一个子问题,同时汇总以达到总硬币数最小的目标。
""" 计算找零
"""
def change(sum, coin, coin_num):print('==========找零==========')s = float(input("请输入要找零金额:"))# 找零比收银员总零钱数大if s > sum:print("收银员零钱不够!")else:# 贪心算法要总硬币数最少,从最大面值开始找零i = len(coin) - 1while i >= 0:if s >= coin[i]:n = int(s / coin[i])if n > coin_num[i]:n = coin_num[i]#贪心算法 动态改变找零总值s -= n * coin[i]print("用了{0}面值的硬币{1}个".format(coin[i], n))i -= 1print("找零结束!")
完整代码实现
"""通过输入获取总零钱
"""
def new_coin():print("=====收银员总零钱统计=====")coin = [0.01, 0.05, 0.1, 0.5, 1.0]coin_num = []sum = 0for index, i in enumerate(coin):num = int(input('收银员{}面值硬币有几个?'.format(i)))coin_num.append(num)sum += i * numprint("收银员总零钱数:{0}".format(sum))return sum, coin, coin_num""" 计算找零 """
def change(sum, coin, coin_num):print('==========找零==========')s = float(input("请输入要找零金额:"))# 找零比收银员总零钱数大if s > sum:print("收银员零钱不够!")else:# 贪心算法要总硬币数最少,从最大面值开始找零i = len(coin) - 1while i >= 0:if s >= coin[i]:n = int(s / coin[i])if n > coin_num[i]:n = coin_num[i]#贪心算法 动态改变找零总值s -= n * coin[i]print("用了{0}面值的硬币{1}个".format(coin[i], n))i -= 1print("找零结束!")if __name__ == '__main__':print("============收银员找零================")sum, coin, coin_num = new_coin()change(sum, coin, coin_num)
PS: 个人原因,断更许久,今天开始慢慢接上之前的更新。
欢迎点赞、收藏、评论区交流,转载标明出处。
Python贪心算法解决收银员找零问题相关推荐
- python换零钱_黄哥Python, 贪心算法解决换零钱问题
下面的文字来源于维基百科 贪心算法(英语:greedy algorithm) 又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法.比如 ...
- 贪心算法经典问题:硬币找零
这是一个用最少硬币支付指定额度的问题. 一.问题描述:如下图图一,设有6种不同面值的硬币,各硬币的面值分别为5分.1角.2角.5角.1元.2元.现要用这些面值的硬币来购物和找钱.购物时规定了可以使用的 ...
- 贪心算法:860.柠檬水找零
题目描述: 在柠檬水摊上,每一杯柠檬水的售价为 5 美元.顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元.10 美元或 20 美元 ...
- 贪心算法解决找零钱问题
4.1 找零问题 问题描述: 设有50.20.10.5.1.0.5.0.1等面额的零钱,顾 客购物花了n元,在支付(n / 100 + 1) * 100元后,收银员应如何找 零,才能使找回的钱数最少. ...
- python贪心算法最短路径_dijkstra算法(贪心算法)——解决最短路径问题
最短路径 给定一张带权图和其中的一个点(作为源点),求源点到其余顶点的最短路径 基本思想 1)源点u,所有顶点的集合V,集合S(S中存有的顶点,他们到源点的最短路径已经确定,源点u默认在S中),集合V ...
- Python项目:The Ship Rendezvous Problem,利用贪心算法解决船舶交会问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Python利用贪心算法解决船舶交会问题 1 Introduction 2 Python Task Greedy Heuristic ...
- 贪心算法解决活动安排-Python实现(排序+贪心选择)
贪心算法解决活动安排 问题 问题概述 分析问题 解决问题 编程 编程流程以及数据类型选择 发现问题以及解决 最终实现 总结 程序缺陷以及完善 解题心路历程 问题 问题概述 设有n个活动的集合E={1, ...
- 『设计模式』就因为多收了我2块5,我追着收银员问是不是不懂设计模式--策略模式
23种设计模式+额外常用设计模式汇总 (持续更新) 今天去超市买东西,买了50多块钱的东西,然后收钱的时候他多收了,明明会员要打白金会员打9折,黄金会员95折,我是白金会员因该是9折. 我问她:&qu ...
- 背包问题 贪心算法 java_JS基于贪心算法解决背包问题
前面我们分享了关于js使用贪心算法解决找零问题,本文我们接着为大家介绍JS基于贪心算法解决背包问题. 贪心算法:在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做 ...
最新文章
- 与AMD合并后,赛灵思与英特尔、英伟达在数据中心市场呈“三足鼎立”之势
- Spring Cloud Alibaba迁移指南(二):零代码替换 Eureka
- 【Linux】 -bash-4.2#问题和Cannot allocate memory
- 管线命令 cut grep
- 前后端分离之Vue(三)爬过得那些坑
- 柱状图python_python柱状图一行
- 百度2015校园招聘软件开发笔试题及答案
- javascript Date类型 学习笔记
- 矩阵的四个基本子空间
- Sharding-Proxy简介_原理_安装_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记018
- Python PEP8 编码规范 代码布局
- 铁路售票系统_自助售票机功能升级了!快来掌握新技能!
- struct 结构体 所占字节数的计算
- 计算机网络:网络常用命令的使用及DNS层次查询、SMTP协议分析
- vue element 项目 表单校验 保姆级教程 纳税人识别号 公司电话传真 银行卡校验(包含注意点)
- python实训案例-用户账户管理
- vb中怎么使图片适应框的大小_如何让放进框内的图片随框大小而变
- 编码过程中单词常用的缩写方式(转载)
- 荣耀猎人是鸿蒙,荣耀猎人游戏本发布 | 荣耀推出全场景游戏品牌 “Hunter”
- 中科院 2014年工程硕士入学专业课笔试考场安排
热门文章
- allegro怎么设置孔的属性_ALLEGRO怎么改孔
- 蓝桥杯嵌入式学习STM32之外部中断EXTI详解
- 生活随记 - 不走寻常路的师傅
- 【Vue3】滑动验证组件 | 滑动验证
- CentOS6.8安装教程
- Vue 跨域请求报错No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.
- VScode 插件 bookmarks
- BIOS实战之VBIOS配置
- php调用nfc,小米手机怎么将NFC功能当做门禁卡来使用?
- HelloWorld! 程序猿同志,茴香豆的茴字有几种字法?