本文主要用於彙總看見過的一些貪婪算法。如有侵權請聯繫,即刪。
找零錢問題:假設只有 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()