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 相关文章推荐
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
Jun 07 Python
Python中函数及默认参数的定义与调用操作实例分析
Jul 25 Python
Python定时器实例代码
Nov 01 Python
用python 批量更改图像尺寸到统一大小的方法
Mar 31 Python
python读取并写入mat文件的方法
Jul 12 Python
pytorch AvgPool2d函数使用详解
Jan 03 Python
python使用ctypes调用扩展模块的实例方法
Jan 28 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 Python
利用Python制作动态排名图的实现代码
Apr 09 Python
pyspark 随机森林的实现
Apr 24 Python
如何用PyPy让你的Python代码运行得更快
Dec 02 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
Jan 19 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
再说下636单管机
2021/03/02 无线电
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
THINKPHP内容分页代码分享
2015/01/14 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
PHP中overload与override的区别
2017/02/13 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
Vue获取微博授权URL代码实例
2020/11/04 Javascript
python网络编程示例(客户端与服务端)
2014/04/24 Python
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
Tornado 多进程实现分析详解
2018/01/12 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
Pyside2中嵌入Matplotlib的绘图的实现
2021/02/22 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
美国知名艺术画网站:Art.com
2017/02/09 全球购物
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
2016年春节问候语
2015/11/11 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书