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)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM