Python 硬币兑换问题


Posted in Python onJuly 29, 2019

硬币兑换问题:

给定总金额为A的一张纸币,现要兑换成面额分别为a1,a2,....,an的硬币,且希望所得到的硬币个数最少。

# 动态规划思想 dp方程式如下
# dp[0] = 0
# dp[i] = min{dp[i - coins[j]] + 1}, 且 其中 i >= coins[j], 0 <= j < coins.length
# 回溯法,输出可找的硬币方案
# path[i] 表示经过本次兑换后所剩下的面值,即 i - path[i] 可得到本次兑换的硬币值。
 
 
def changeCoins(coins, n):
  if n < 0: return None
  dp, path = [0] * (n+1), [0] * (n+1) # 初始化
  for i in range(1, n+1):
    minNum = i # 初始化当前硬币最优值
    for c in coins: # 扫描一遍硬币列表,选择一个最优值
      if i >= c and minNum > dp[i-c]+1:
        minNum, path[i] = dp[i-c]+1, i - c
    dp[i] = minNum # 更新当前硬币最优值
 
  print('最少硬币数:', dp[-1])
  print('可找的硬币', end=': ')
  while path[n] != 0:
    print(n-path[n], end=' ')
    n = path[n]
  print(n, end=' ')
 
 
if __name__ == '__main__':
  coins, n = [1, 4, 5], 22 # 输入可换的硬币种类,总金额n
  changeCoins(coins, n)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
测试、预发布后用python检测网页是否有日常链接
Jun 03 Python
python和shell实现的校验IP地址合法性脚本分享
Oct 23 Python
Python中转换角度为弧度的radians()方法
May 18 Python
python字符串连接方法分析
Apr 12 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
Apr 05 Python
pandas对指定列进行填充的方法
Apr 11 Python
python交换两个变量的值方法
Jan 12 Python
Python传递参数的多种方式(小结)
Sep 18 Python
Python分割训练集和测试集的方法示例
Sep 19 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
Python中用xlwt制作表格实例讲解
Nov 05 Python
学会迭代器设计模式,帮你大幅提升python性能
Jan 03 Python
django中使用Celery 布式任务队列过程详解
Jul 29 #Python
详解python中自定义超时异常的几种方法
Jul 29 #Python
Python 离线工作环境搭建的方法步骤
Jul 29 #Python
如何通过python的fabric包完成代码上传部署
Jul 29 #Python
Python八皇后问题解答过程详解
Jul 29 #Python
python 标准差计算的实现(std)
Jul 29 #Python
Python 二叉树的层序建立与三种遍历实现详解
Jul 29 #Python
You might like
UCenter Home二次开发指南
2009/05/28 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
php中yii框架实例用法
2020/12/22 PHP
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
2007/03/27 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
基于JS实现web端录音与播放功能
2019/04/17 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
微信小程序自定义yPicker组件实现省市区三级联动功能
2020/10/29 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
玩转python爬虫之cookie使用方法
2016/02/17 Python
python 性能提升的几种方法
2016/07/15 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
数控技校生自我鉴定
2014/04/19 职场文书
美术社团活动总结
2014/06/27 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
分家协议书范本
2016/03/22 职场文书
mysql查找连续出现n次以上的数字
2022/05/11 MySQL