• 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)
  • 相关阅读:
    Docker-常用命令
    5分钟了解折半插入排序
    Spring框架之IOC原理
    使用JS实现简单喷泉效果
    坦克大战系列6-API常用函数说明1
    坦克大战系列6-API常用函数说明2
    为什么要使用-Docker
    SQL语言:存储过程
    使用原生JS重构简单的音乐播放器
    [区间DP]ZOJ3541 The Last Puzzle
  • 原文地址:https://www.cnblogs.com/jeffrey04118110/p/11829459.html
Copyright © 2020-2023  润新知