貪婪算法

本文主要用於彙總看見過的一些貪婪算法。如有侵權請聯繫,即刪。

找零錢問題:假設只有 1 分、 2 分、五分、 1 角、二角、 五角、 1元的硬幣。在超市結賬 時,如果 需要找零錢, 收銀員希望將最少的硬幣數找給顧客。那麼,給定 需要找的零錢數目,如何求得最少的硬幣數呢?

#找零錢問題
# _*_ coding:utf-8 _*_
def main():
    d=[0.01,0.02,0.05,0.1,0.2,0.5,1.0]  #存儲每種硬幣面值
    d_num=[]  #存儲每種硬幣的數量
    s=0
    #擁有的零錢總和
    temp=input('請輸入每種零錢的數量:')
    d_num0=temp.split(" ")
    for i in range(0,len(d_num0)):
        d_num.append(int(d_num0[i]))
        s+=d[i]*d_num[i]  #計算收銀員共有多少錢
    sum=float(input('請輸入需要找的零錢:'))

    #邊界條件
    if sum>s:
        print("輸入錯誤!")
        return 0
    for i in range(7,0,-1):  #取不到0這個數字
        i=i-1
        if sum>=d[i]:
            n=int(sum/d[i])
            if n>=d_num[i]:  #p判斷是否更新n值
                n=d_num[i]
            sum-=n*d[i]
            print("用了{0}個{1}元硬幣".format(n,d[i]))

if __name__=="__main__":
    main()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章