貪心算法——硬幣找零——python


貪心算法是指在求解問題的過程中每一步總是做出在當前看來是最好的選擇,以期望獲得問題的全局最優解

  即只“貪圖”眼前的最大利益,不考慮全局的

  所以貪心算法不一定能求出正確解,需要證明

 

貪心算法一般求解優化問題, 一般是最值問題

 

硬幣找零

  某種貨幣的硬幣有如下幾種的面值:1元, 5元,10元,25元, 100元,且數量不限

  找零的數額為amount_rem,那么如何組合該貨幣的幾種面值,從而使得客戶所得的找零數最少

  如找零72元

def get_min_coins(amount_rem):       #貪心算法
    coin_combinations = [1, 5, 10, 25, 100]          #面值
    coin_list = []
    
    sorted_coin_combinations = sorted(coin_combinations, reverse = True)   #將面值從大到小排序
    
    for coin_val in sorted_coin_combinations:
        coin_count = int(amount_rem/coin_val)     #計算每個面值的個數(換成零錢時)
        coin_list += [coin_val]*coin_count        #將零錢放入輸出列表
        
        amount_rem -= coin_val * coin_count       #找零之后,剩下的錢
        if amount_rem <= 0:
            break
    
    return coin_list
        


if __name__ == "__main__":
    print(get_min_coins(72))

 

輸出結果

[25, 25, 10, 10, 1, 1]


免責聲明!

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



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