# 貪心演算法求解貨幣兌換問題
# 貨幣系統有 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
1print('
通過貪心演算法兌換得到的貨幣數量:
',count)
2print('
其中,面值為
',v)
3print('
的貨幣數量分別是
',x)
執行結果:
1 要兌換的貨幣數量為: 2532 通過貪心演算法兌換得到的貨幣數量: 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 中,價值存放...