(培养锻炼程序设计的逻辑脑)硬币问题 --- 贪心算法

一元硬币,五元硬币,十元硬币,五十元硬币,壹佰元硬币,五百元硬币,分别有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;
}





你可能感兴趣的:((培养锻炼程序设计的逻辑脑)硬币问题 --- 贪心算法)