python基础----找零问题

Posted Direworlf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础----找零问题相关的知识,希望对你有一定的参考价值。

给定要找回的总钱数和硬币的种类,求出找零所需最少的硬币数目。

例如:

  总钱数63,硬币种类为25、21、10、5、1,求出最小硬币数

分析:

  我们可以先假设只有一种硬币1,

  假如总钱数为1,硬币数就为1,总钱数为2,则硬币数为2.

  则总钱数n,所需的硬币数就是n个。

  以列表形式表示不同总钱数所对应的硬币数目,即:

  coinUsed = [i for i in range(money + 1)]

  依次类推,假如硬币种类不止一种,我们只需要对比对应总钱数时所需硬币数的多少就可以了。

代码如下:

def coin_change(values, money, coinUsed):
    """
    values:钱币对应的种类列表
    money: 要找回的总钱数
    coinUsed: 对应于钱币总数money所使用的硬币数目,以列表形式index对于元素值呈现
    """
    for cents in range(1,money+1):
        for value in values:
            if cents >= value and coinUsed[cents-value]+1 < coinUsed[cents]:
                coinUsed[cents] = coinUsed[cents-value]+1
        print(面值为{0}的最小硬币数为{1}.format(cents, coinUsed[cents]))

list = [1,5,25,21,10]
money = 63
coinsUsed = [i for i in range(money+1)]
coin_change(list, 63,coinsUsed)

 

 

以上是关于python基础----找零问题的主要内容,如果未能解决你的问题,请参考以下文章

python学习之找零问题(递归和动态规划两种解法)

记忆:用硬币找零

算法笔记_048:找零问题(Java)

Leetcode刷题Python 860.柠檬水找零

(原)关于人民币找零钱的问题

动态规划——硬币找零