貨幣兌換問題(貪心法) Python實現

2022-09-09 10:21:14 字數 1052 閱讀 7193

# 貪心演算法求解貨幣兌換問題

# 貨幣系統有 n 種硬幣,面值為 v1,v2,v3...vn,其中 v1=1,使用總值money與之兌換,求如何使硬幣的數目最少,即 x1,x2,x3...xn 之和最小

# 輸入:各種貨幣的面值 v1,v2,v3...vn;要兌換的總值 money

# 輸出:兌換得到最少的貨幣數量

1

#修改面額

2 v = [50,10,5,2,1]3#

修改要兌換的貨幣量money

4 money = 2535#

每種貨幣初始數量為 0

6 x = [0]*len(v)7#

總貨幣初始數量為 0

8 count = 0

1

#從最大面額開始兌換,剩餘不足兌換大面額,則接著兌換小面額,直到兌換完成

2for i in

range (0,len(v)):

3 x[i] = money // v[i] #

取整符號//

4 money = money % v[i] #

取餘符號%

5for i in

range (0,len(v)):

6 count = x[i] +count

1

print('

通過貪心演算法兌換得到的貨幣數量:

',count)

2print('

其中,面值為

',v)

3print('

的貨幣數量分別是

',x)

執行結果:

1 要兌換的貨幣數量為: 253

2 通過貪心演算法兌換得到的貨幣數量: 7

3 其中,面值為 [50, 10, 5, 2, 1]

4 的貨幣數量分別是 [5, 0, 0, 1, 1]

貪心法保證每步為最優,但不保證全域性最優。也就是說,運用貪心法最終可得到非常理想的結果,但還並不是最優的。

python貪心法 演算法 貪心

貪心演算法也被稱為貪婪演算法,它是指在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態,只與...

貨幣兌換問題(動態規劃法) Python實現

動態規劃法求解貨幣兌換問題 貨幣系統有 n 種硬幣,面值為 v1,v2,v3.vn,其中 v1 1,使用總值為money的錢與之兌換,求如何使硬幣的數目最少,即 x1,x2,x3.xn 之和最小 輸入 各種貨幣的面值 v1,v2,v3.vn 要兌換的總值 money 輸出 兌換得到最少的貨幣數量 1...

揹包問題 (貪心法)

問題 給定n個物品和乙個容量為c的揹包,物品i的重量為wi,其價值為vi,揹包問題是如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大。注意和0 1揹包的區別,在揹包問題中,可以將某種物品的一部分裝入揹包中,但不可以重複裝入。想法 每次裝入單位價值最大的物品。物品重量放在陣列w n 中,價值存放...