程式設計 貪心演算法解決硬幣問題

2021-07-24 10:41:44 字數 703 閱讀 5586

問題描述:

有1元、5元、10元、50元、100元、500元的硬幣各c1,c5,c10,c50,c100,c500枚。現在要用這些硬幣來支付a元,最少需要多少枚硬幣?假設本題至少存在一種支付方案。

限制條件:

0<=c1,c5,c10,c50,c100,c500<=10的9次方

0<= a <= 10的9次方

輸入:

c1 = 3

c2 = 2

c10 = 1

c50 = 3

c100 = 0

c500 = 2

a = 620

輸出:

6(500元硬幣1枚,50元硬幣2枚,10元硬幣1枚,5元硬幣2枚,合計6枚)

思路:為了盡量地減少硬幣的數量,我們首先得盡可能多地使用500元硬幣,剩餘部分盡可能多地使用100元硬幣,剩餘部分盡可能多地使用50元硬幣,剩餘部分盡可能多地使用10元硬幣,再剩餘部分盡可能多地使用5元硬幣,最後的部分使用1元硬幣支付。

也就是優先使用大面值的硬幣。使用貪心演算法

主要**部分:

const

int v[6] =

//輸入

int c[6];

int a;

void solve()

printf("%d\n",ans);

}

硬幣問題(典型的貪心演算法)

有1元,5元,10元,50元,100元,500元的硬幣各c1 c5 c10 c50 c100 c500 枚。現在要用這些硬幣來支付a 元,最少需要多少枚硬幣?假設本題至少存在一種支付方案。限制條件 0 c1 c5 c10 c50 c100 c500 100000000000 0 a 10000000...

貪心演算法 硬幣問題(無限個)

貪心演算法 又稱貪婪演算法 是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,演算法得到的是在某種意義上的區域性最優解 1 貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇。也就是說,不從整體最優上加以考慮,做出的只是在某種意義上的區域性最優解。...

硬幣找零問題 貪心演算法

問題 有1元 2元 5元 10元的硬幣無限多枚。現在要用這些硬幣來支付a 輸入 元,返回需要多少枚硬幣的找零序列。能找回高面值硬幣就先找回高面值硬幣。include include using namespace std class sulotion 用來儲存結果 int p coins.size ...