#include <stdio.h>
int a[10] = {100, 50, 10, 5, 2, 1};
int fun(int t)
{
int cnt = 0, i;
for(i = 0; i < 6; i++) {
if(t >= a[i]) {
cnt += t / a[i];
t %= a[i];
}
}
return cnt;
}
int main()
{
int n;
int m[105];
while(scanf("%d", &n) && n) {
int c = 0;
for(int i = 0; i < n; i++)
{
scanf("%d", &m[i]);
c += fun(m[i]);
}
printf("%d\n", c);
}
return 0;
}
贪心入门
每次交换都换当前可交换最大币值的零钱,剩下的钱递推,结束条件为0
如
工资为3 2 1
准备的人民币为 100 50 10 5 2 1
3 / 2 = 1张二元
(3 % 2)/ 1 = 1张一元