Python贪心算法实例小结


Posted in Python onApril 22, 2018

本文实例讲述了Python贪心算法。分享给大家供大家参考,具体如下:

1. 找零钱问题:假设只有 1 分、 2 分、五分、 1 角、二角、 五角、 1元的硬币。在超市结账 时,如果 需要找零钱, 收银员希望将最少的硬币数找给顾客。那么,给定 需要找的零钱数目,如何求得最少的硬币数呢?

# -*- coding:utf-8 -*-
def main():
  d = [0.01,0.02,0.05,0.1,0.2,0.5,1.0] # 存储每种硬币面值
  d_num = [] # 存储每种硬币的数量
  s = 0
  # 拥有的零钱总和
  temp = raw_input('请输入每种零钱的数量:')
  d_num0 = temp.split(" ")
  for i in range(0, len(d_num0)):
    d_num.append(int(d_num0[i]))
    s += d[i] * d_num[i] # 计算出收银员拥有多少钱
  sum = float(raw_input("请输入需要找的零钱:"))
  if sum > s:
    # 当输入的总金额比收银员的总金额多时,无法进行找零
    print("数据有错")
    return 0
  s = s - sum
  # 要想用的钱币数量最少,那么需要利用所有面值大的钱币,因此从数组的面值大的元素开始遍历
  i = 6
  while i >= 0: 
    if sum >= d[i]:
      n = int(sum / d[i])
      if n >= d_num[i]:
        n = d_num[i] # 更新n
      sum -= n * d[i] # 贪心的关键步骤,令sum动态的改变,
      print("用了%d个%f元硬币"%(n, d[i]))
    i -= 1
if __name__ == "__main__":
  main()

2. 求最大子数组之和问题:给定一个整数数组(数组元素有负有正),求其连续子数组之和的最大值。

# -*- coding:utf-8 -*-
def main():
  s = [12,-4,32,-36,12,6,-6]
  print("定义的数组为:",s)
  s_max, s_sum = 0, 0
  for i in range(len(s)):
    s_sum += s[i]
    if s_sum >= s_max:
      s_max = s_sum # 不断更新迭代s_max的值,尽可能的令其最大
    elif s_sum < 0:
      s_sum = 0
  print("最大子数组和为:",s_max)
if __name__ == "__main__":
  main()

3. 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。 对于给定的n(n <= 5000)和k(k <= 1000)个加油站位置,编程计算最少加油次数。

# 设汽车加满油后可行驶n公里,且旅途中有k个加油站
def greedy():
  n = 100
  k = 5
  d = [50,80,39,60,40,32]
  # 表示加油站之间的距离
  num = 0
  # 表示加油次数
  for i in range(k):
    if d[i] > n:
      print('no solution')
      # 如果距离中得到任何一个数值大于n 则无法计算
      return 
  i, s = 0, 0
  # 利用s进行迭代
  while i <= k:
    s += d[i]
    if s >= n:
      # 当局部和大于n时则局部和更新为当前距离
      s = d[i]
      # 贪心意在令每一次加满油之后跑尽可能多的距离
      num += 1
    i += 1
  print(num)
if __name__ == '__main__':
  greedy()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python控制台显示时钟的示例
Feb 24 Python
Python深入学习之对象的属性
Aug 31 Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 Python
python3.4控制用户输入与输出的方法
Oct 17 Python
python+webdriver自动化环境搭建步骤详解
Jun 03 Python
python打印异常信息的两种实现方式
Dec 24 Python
Python字符串及文本模式方法详解
Sep 10 Python
Python实现像awk一样分割字符串
Sep 15 Python
python全栈开发语法总结
Nov 22 Python
一文搞懂Python Sklearn库使用
Aug 23 Python
Python利用FlashText算法实现替换字符串
Mar 31 Python
python 判断网络连通的实现方法
Apr 22 #Python
Python3之读取连接过的网络并定位的方法
Apr 22 #Python
对Python 网络设备巡检脚本的实例讲解
Apr 22 #Python
python爬虫_实现校园网自动重连脚本的教程
Apr 22 #Python
selenium+python实现自动登录脚本
Apr 22 #Python
python实现校园网自动登录的示例讲解
Apr 22 #Python
用Python写一段用户登录的程序代码
Apr 22 #Python
You might like
配置支持SSI
2006/11/25 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
js 获取图像缩放后的实际宽高,位置等信息
2017/03/07 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
Python中Qslider控件实操详解
2021/02/20 Python
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
会计实习自我鉴定
2013/12/04 职场文书
办公室主任先进事迹
2014/01/18 职场文书
双语教学实施方案
2014/03/23 职场文书
计算机专业自荐信
2014/05/24 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
民事调解书范文
2015/05/20 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技
基于Python编写一个监控CPU的应用系统
2022/06/25 Python