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常见数据结构详解
Jul 24 Python
Python的re模块正则表达式操作
May 25 Python
Python + selenium自动化环境搭建的完整步骤
May 19 Python
浅谈dataframe中更改列属性的方法
Jul 10 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
利用Python校准本地时间的方法教程
Oct 31 Python
python验证码图片处理(二值化)
Nov 01 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
python+opencv3生成一个自定义纯色图教程
Feb 19 Python
Pycharm如何运行.py文件的方法步骤
Mar 03 Python
python用Configobj模块读取配置文件
Sep 26 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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
python多线程操作实例
2014/11/21 Python
Django添加sitemap的方法示例
2018/08/06 Python
python实现贪吃蛇游戏
2020/03/21 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
英语专业毕业生求职信
2014/05/24 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
道路施工安全责任书
2014/07/24 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
小学三年级作文之写景
2019/11/05 职场文书
实现GO语言对数组切片去重
2022/04/20 Golang
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android