一元硬币,五元硬币,十元硬币,五十元硬币,壹佰元硬币,五百元硬币,分别有C1, C5, C10, C50, C100, C500 枚。我们想要以用可能少数量的硬币帮忙支付A ,。到底需要出几枚硬币呢?另外。假设这种付款方式至少存在一种。
0<= C <=10^9
0<= A <=10^9
输入样例:
C1=3, C5=2, C10=1, C50=3, C100=0, C500=2, A = 620;
输出:
6
解题分析:
读完此题后,感觉适合于先用大的硬币,如果有剩余的钱则用,相对小的硬币,以此类推!
此方法也叫贪心。
代码:
//硬币问题
#include <iostream>
#include <cstdio>
using namespace std;
const int V[6] = { 1, 5, 10, 50, 100, 500};
int C[6];
int A;
int main()
{
scanf("%d %d %d %d %d %d %d", &C[0], &C[1], &C[2], &C[3], &C[4], &C[5], &A);
int ans=0;
for(int i = 5; i >= 0;i--)
{
int t=min(A/V[i],C[i]);
A -= t * V[i];
ans += t;
}
printf("%d\n", ans);
return 0;
}