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下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
Python获取央视节目单的实现代码
Jul 25 Python
Python操作使用MySQL数据库的实例代码
May 25 Python
pygame实现弹力球及其变速效果
Jul 03 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
python如何爬取个性签名
Jun 19 Python
django富文本编辑器的实现示例
Apr 10 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 Python
利用python清除移动硬盘中的临时文件
Oct 28 Python
python多线程和多进程关系详解
Dec 14 Python
python多次执行绘制条形图
Apr 20 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
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
node.js中的fs.createWriteStream方法使用说明
2014/12/17 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
基于ajax与msmq技术的消息推送功能实现代码
2016/12/26 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
利用Python演示数型数据结构的教程
2015/04/03 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
详解python中*号的用法
2019/10/21 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
django下创建多个app并设置urls方法
2020/08/02 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
2014年网管工作总结
2014/12/11 职场文书
二审答辩状格式
2015/05/22 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
学困生转化工作总结
2015/08/13 职场文书
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle