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 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
Jan 12 Python
python计算两个数的百分比方法
Jun 29 Python
Windows下将Python文件打包成.EXE可执行文件的方法
Aug 03 Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 Python
python实现dijkstra最短路由算法
Jan 17 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
python实现函数极小值
Jul 10 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
python sorted方法和列表使用解析
Nov 18 Python
django中的数据库迁移的实现
Mar 16 Python
基于python实现获取网页图片过程解析
May 11 Python
人工智能深度学习OpenAI baselines的使用方法
May 20 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类相关知识点实例总结
2016/09/28 PHP
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
Python实现多行注释的另类方法
2014/08/22 Python
使用python3.5仿微软记事本notepad
2016/06/15 Python
使用Python对MySQL数据操作
2017/04/06 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
解决python3 json数据包含中文的读写问题
2018/05/10 Python
python判断一个数是否能被另一个整数整除的实例
2018/12/12 Python
对python函数签名的方法详解
2019/01/22 Python
在pycharm中显示python画的图方法
2019/08/31 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
小学校本培训方案
2014/06/06 职场文书
医德医风自我评价
2014/09/19 职场文书
2014年副班长工作总结
2014/12/10 职场文书
表扬稿范文
2015/01/17 职场文书
违纪学生保证书
2015/02/27 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
初三英语教学反思
2016/02/15 职场文书
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers