很簡單,面額從大到小去減就可以了,優化一下的話就是寫了個tryIndex去記錄當前有可能用到的最大面額
#include <stdio.h>
#include <iostream>
using namespace std;
const int g_MoneyList[] = {100,50,10,5,2,1};
void main()
{
int n;
while(cin>>n && n!=0)
{
int *salaryList = new int[n];
for(int i=0; i<n; i++)
scanf("%d",&salaryList[i]);
int nTotalNum = 0;
for(int i=0;i<n;i++)
{
int nMoney = salaryList[i];
int tryIndex = 0;
while(nMoney != 0)
{
if(nMoney >= g_MoneyList[tryIndex])
{
nMoney -= g_MoneyList[tryIndex];
nTotalNum++;
}
else
tryIndex++;
}
}
printf("%d\n",nTotalNum);
}
}