zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    .NET-记一次架构优化实战与方案-梳理篇
    .net core实践系列之SSO-跨域实现
    Vue
    C# WPF
    开源框架
    开源框架
    开源框架
    开源框架
    WCF
    WCF
  • 原文地址:https://www.cnblogs.com/jeffrey04118110/p/11829459.html
Copyright © 2011-2022 走看看