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的Tornado框架异步编程入门实例
Apr 24 Python
python中函数默认值使用注意点详解
Jun 01 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
tensorflow: 查看 tensor详细数值方法
Jun 13 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
django orm 通过related_name反向查询的方法
Dec 15 Python
使用Python制作简单的小程序IP查看器功能
Apr 16 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
Jun 19 Python
pytorch打印网络结构的实例
Aug 19 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
python的flask框架难学吗
Jul 31 Python
pytorch锁死在dataloader(训练时卡死)
May 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
php后退一页表单内容保存实现方法
2012/06/17 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
Javascript 继承机制实例
2009/08/12 Javascript
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
详解Python如何获取列表(List)的中位数
2016/08/12 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
Flask处理Web表单的实现方法
2021/01/31 Python
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
孝敬父母的演讲稿
2014/05/14 职场文书
销售类求职信
2014/06/13 职场文书
毕业生实习证明
2014/09/19 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
办公室卫生管理制度
2015/08/04 职场文书
使用Redis实现实时排行榜功能
2021/07/02 Redis
python字典的元素访问实例详解
2021/07/21 Python
mysql 子查询的使用
2022/04/28 MySQL