当前位置:主页 > python教程 > Python 硬币兑换问题

Python硬币兑换思路和方法

发布:2020-01-18 09:31:04 143


本站精选了一篇Python相关的编程文章,网友邵溪澈根据主题投稿了本篇教程内容,涉及到Python、硬币兑换、Python 硬币兑换问题相关内容,已被377网友关注,内容中涉及的知识点可以在下方直接下载获取。

Python 硬币兑换问题

硬币兑换问题:

给定总金额为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硬币兑换思路和方法的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。


参考资料

相关文章

  • 浅谈python3中input输入的使用

    浅谈python3中input输入的使用

    发布:2022-11-03

    给大家整理一篇关于python3的教程,这篇文章主要介绍了浅谈python3中input输入的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • Python+seaborn实现联合分布图的绘制

    发布:2023-04-06

    联合分布(Joint Distribution)图是一种查看两个或两个以上变量之间两两相互关系的可视化图,在数据分析操作中经常需要用到。本文将通过seaborn实现绘制联合分布图,需要的可以参考一下


  • 如何使用Python 打印各种三角形

    发布:2022-10-10

    给网友朋友们带来一篇关于Python的教程,这篇文章主要介绍了如何使用Python 打印各种三角形,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下


  • Python开发之射击闯关游戏的实现

    发布:2023-03-05

    这篇文章主要为大家详细介绍了如何利用Python实现射击闯关游戏,文中的示例代码讲解详细,对我们学习Python有一定的帮助,感兴趣的小伙伴可以了解一下


  • Python给定一个句子倒序输出单词以及字母的方法

    发布:2023-01-04

    给网友朋友们带来一篇关于Python的教程,今天小编就为大家分享一篇Python给定一个句子倒序输出单词以及字母的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • WingPro 7 设置Python路径的操作步骤

    发布:2019-11-29

    Python使用称为Python Path的搜索路径来查找使用import语句导入代码的模块。这篇文章主要介绍了使用WingPro 7 设置Python路径的方法,需要的朋友可以参考下


  • python中退出for循环的方法

    发布:2020-01-31

    Python中的for循环与其它语言不大一样,但跳出循环还是与大多数语言一样,可以使用关键字continue跳出本次循环或者break跳出整个for循环。


  • python读取文件名称生成list的方法

    发布:2021-05-28

    下面为大家分享一篇python读取文件名称生成list的方法,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧


网友讨论