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和shell实现的校验IP地址合法性脚本分享
Oct 23 Python
Python中的测试模块unittest和doctest的使用教程
Apr 14 Python
全面了解Python环境配置及项目建立
Jun 30 Python
Python下载网络小说实例代码
Feb 03 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 Python
使用TFRecord存取多个数据案例
Feb 17 Python
MATLAB数学建模之画图汇总
Jul 16 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
Python基础详解之邮件处理
Apr 28 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
DOM XPATH获取img src值的query
2013/09/23 PHP
PHP中date与gmdate的区别及默认时区设置
2014/05/12 PHP
php使用正则验证中文
2016/04/06 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
jquery ajax 局部刷新小案例
2014/02/08 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
如何提高数据访问速度
2016/12/26 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
Nginx设置为Node.js的前端服务器方法总结
2019/03/27 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
简单谈谈Python中函数的可变参数
2016/09/02 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
Python 如何展开嵌套的序列
2020/08/01 Python
使用Python实现音频双通道分离
2020/12/25 Python
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
安全员岗位职责
2013/11/11 职场文书
体育教育个人自荐信范文
2013/12/01 职场文书
保安岗位职责
2014/02/21 职场文书
绿色校园广播稿
2014/10/13 职场文书
销售2014年度工作总结
2014/12/08 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
奖学金个人总结
2015/03/04 职场文书
Golang并发工具Singleflight
2022/05/06 Golang