1. 程式人生 > >sincerit 硬幣找零之最小數量

sincerit 硬幣找零之最小數量

現存在一堆面值為 1,2,5,10,20,50 面值的硬幣,問找出總值為 N個單位的零錢的所使用的硬幣的數量最少,輸出最小值

#include <iostream>
using namespace std;
int values[100]; //硬幣面值的陣列
int main() {
	int money,size;
	cout << "輸入要找零的金額: ";
	cin >> money;
	cout << "輸入要面值的總數和種類: ";
	cin >> size;
	cout << "輸入面值(空格隔開):"; 
	for
(int i = 0; i < size; i++) cin >> values[i]; int coinsUsed[money+5], mincoin; for(int i = 1; i <= money; i++) { mincoin = i; // 假設面值i換取最小的數量就是i for (int j = 0; j < size; j++) { if(values[j] <= i) { // 如果能夠換取就一直換取 mincoin = min(mincoin,coinsUsed[i - values[j]] + 1); } }
coinsUsed[i] = mincoin; } cout<<"總共需要面幣張數為"<<coinsUsed[money]<<endl; return 0; }