感觉像是一个简单的贪心,每次从最大的币值中选,这样就能保证所需要的总张数最少。
#include "stdafx.h"
#include<stdio.h>
int main()
{
int a[6] = { 100,50,10,5,2,1 };
int n;
while (scanf("%d",&n)!=EOF)
{
if (n == 0) break;
int count = 0;
while (n--)
{
int x;
scanf("%d", &x);
for (int i = 0;i < 6;i++)
{
if (x == 0)break;
if (x >= a[i]) { count += x / a[i];x = x%a[i]; }
else continue;
}
}
printf("%d\n", count);
}
return 0;
}