Python 硬币兑换问题

 更新时间:2019年07月29日 10:14:08   作者:GorillaNotes  
这篇文章主要介绍了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实现类似jQuery使用中的链式调用的示例

    Python实现类似jQuery使用中的链式调用的示例

    chained calls链式调用其实多是指一种方法链的程序写法,这里我们来看一下Python实现类似jQuery使用中的链式调用的示例,首先说明一下什么是链式调用:
    2016-06-06
  • Python编程中字符串和列表的基本知识讲解

    Python编程中字符串和列表的基本知识讲解

    这篇文章主要介绍了Python编程中字符串和列表的基本知识讲解,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • python字符串替换示例

    python字符串替换示例

    这篇文章主要介绍了python字符串替换示例,需要的朋友可以参考下
    2014-04-04
  • python使用mitmproxy抓取浏览器请求的方法

    python使用mitmproxy抓取浏览器请求的方法

    今天小编就为大家分享一篇python使用mitmproxy抓取浏览器请求的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python操作注册表的方法实现

    python操作注册表的方法实现

    Python提供了winreg模块,可以用于操作Windows注册表,本文就来介绍一下python操作注册表的方法实现,主要包括打开注册表、读取注册表值、写入注册表值和关闭注册表,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • python实现大文本文件分割成多个小文件

    python实现大文本文件分割成多个小文件

    这篇文章主要为大家详细介绍了python实现大文本文件分割成多个小文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • Python使用datetime库实现对时间的获取方法

    Python使用datetime库实现对时间的获取方法

    这篇文章通过一个简单示例给大家介绍了Python如何使用datetime库实现对时间的获取方法,文章通过代码示例给大家介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2023-11-11
  • Python itertools.product方法代码实例

    Python itertools.product方法代码实例

    这篇文章主要介绍了Python itertools.product方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 利用aardio给python编写图形界面

    利用aardio给python编写图形界面

    这篇文章主要为大家详细介绍了利用aardio给python编写图形界面的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • python批量图片处理简单示例

    python批量图片处理简单示例

    这篇文章主要介绍了python批量图片处理,涉及Python针对图片文件的遍历、判断、缩放等相关操作技巧,需要的朋友可以参考下
    2019-08-08

最新评论