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写的Tkinter程序屏幕居中方法
Mar 10 Python
python定时检查某个进程是否已经关闭的方法
May 20 Python
Bottle框架中的装饰器类和描述符应用详解
Oct 28 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
python邮件发送smtplib使用详解
Jun 16 Python
浅述python2与python3的简单区别
Sep 19 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
200行python代码实现2048游戏
Jul 17 Python
django之自定义软删除Model的方法
Aug 14 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
彻底解决Python包下载慢问题
Nov 15 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
解决php中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
Javascript中神奇的this
2016/01/20 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
jquery选择器中的空格与大于号&gt;、加号+与波浪号~的区别介绍
2016/06/24 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
使用python Django做网页
2013/11/04 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
为什么需要版本控制?
2013/08/08 面试题
跟单文员的岗位职责
2013/11/14 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
房产公证书范本
2014/04/10 职场文书
融资租赁计划书
2014/04/29 职场文书
经典团队口号大全
2014/06/21 职场文书
中国梦读书活动总结
2014/07/10 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers