

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int moneyvalue[6] = { 1,5,10,50,100,500 };             //代表硬币的面值
int moneycount[6];                                     //代表每种面值硬币的个数
int A;                                                 //代表要支付的钱数
int greedy();                                          //代表要进行贪心算法的函数
int greedy() {
	int i;
	int count;                                            //代表每次硬币的枚数
	int sum = 0;                                          //代表进行支付时,所用硬币的最少枚数
	for (i = 5; i >= 0 ; i--) {
		count = min(A / moneyvalue[i], moneycount[i]);    //代表使用面值尽量大的硬币时,该硬币所用的枚数
		A -= count * moneyvalue[i];                       //使用该硬币进行支付后,要支付的钱数也要对应相减
		sum += count;
	}
	return sum;
}
int main() {
	int i;
	for (i = 0; i < 6; i++) {
		scanf("%d",&moneycount[i]);
	}
	scanf("%d", &A); 
	cout << greedy() << endl;
}

原文:https://www.cnblogs.com/gao79135/p/14250793.html