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创建日历实例
Aug 21 Python
python编写爬虫小程序
May 14 Python
python3序列化与反序列化用法实例
May 26 Python
利用python微信库itchat实现微信自动回复功能
May 18 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
Python动态声明变量赋值代码实例
Dec 30 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 Python
Python定时器线程池原理详解
Feb 26 Python
解决Keras自带数据集与预训练model下载太慢问题
Jun 12 Python
python 使用多线程创建一个Buffer缓存器的实现思路
Jul 02 Python
python绘图subplots函数使用模板的示例代码
Apr 30 Python
Python入门之基础语法详解
May 11 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
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
JS实现密码框效果
2020/09/10 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
python ip正则式
2009/05/07 Python
python自动裁剪图像代码分享
2017/11/25 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
Python中url标签使用知识点总结
2020/01/16 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
python中get和post有什么区别
2020/06/19 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
导师评语大全
2014/04/26 职场文书
吨的认识教学反思
2014/04/27 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
经典人生语录分享:不畏将来,不念过去,笑对当下
2019/12/12 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
Java实现带图形界面的聊天程序
2022/06/10 Java/Android