硬币问题
有1元,5元,10元,50元,100元,500元的硬币各c1,c5,c10,c50,c100,c500枚,现在要用这些硬币来支付A元,最少需要多少枚硬币?假设本题至少存在一种支付方案
sample input
3 2 1 3 0 2
620
sample output
6
#include <iostream>
#include<cstdio> /*在硬币问题中,使用贪心法很高效,贪心法总是选取当前最优解,在此问题中,总是先选面值较大的硬币即是贪心的原则*/#include<algorithm>
using namespace std;
const int v[6]={1,5,10,50,100,500};
int A; //总钱数
int number[6];
int main()
{
for(int i=0;i<6;i++)
scanf("%d",&number[i]);
scanf("%d",&A);
int ans=0;
for(int i=5;i>=0;i--)
{
int t=min(A/v[i],number[i]);
A-=t*v[i];
ans+=t;
}
cout<<ans<<endl;
return 0;
}