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 装饰器功能以及函数参数使用介绍
Jan 27 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
Jun 13 Python
详解Python 模拟实现生产者消费者模式的实例
Aug 10 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 Python
详解Django的model查询操作与查询性能优化
Oct 16 Python
python scp 批量同步文件的实现方法
Jan 03 Python
Python3数字求和的实例
Feb 19 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
安装完Python包然后找不到模块的解决步骤
Feb 13 Python
Python必须了解的35个关键词
Jul 16 Python
虚拟机下载python是否需要联网
Jul 27 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
Oct 02 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 日期时间函数的高级应用技巧
2009/10/10 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
php GUID生成函数和类
2014/03/10 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
JavaScript类库D
2010/10/24 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
2013/04/15 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
微信小程序实现倒计时补零功能
2018/07/09 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
python中set常用操作汇总
2016/06/30 Python
django foreignkey(外键)的实现
2019/07/29 Python
Pytorch 实现自定义参数层的例子
2019/08/17 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
护理专业学生的求职信范文
2013/12/11 职场文书
法定代表人授权委托书
2014/04/04 职场文书
《大禹治水》教学反思
2014/04/27 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
图文详解matlab原始处理图像几何变换
2021/07/09 Python