题不难,没想到卡在了循环测试数据输入输出上(汗....)
用了函数递归(算递归嘛?我也是个初学者罢了)
写了注释希望对你有帮助
#include<stdio.h>
void func(int);
int count=0;
int main(void)
{ int n;//n是需要发工资的员工数
while(scanf("%d",&n)!=EOF&&n!=0)//n为0时结束
{ count=0;
while(n--)//输入n次
{
int x;
scanf("%d",&x);
func(x);//调用函数
}
printf("%d\n",count);//输出
}
return 0;
}
void func(int x)
{ if(x==0);
if(x==1)
count++;//工资为1时只需要准备一张一块的
if(x>=2&&x<5)//满足这种条件首先count++,再减2(即count加一的原因)调用函数。以下原因相同
{ count++;
func(x-2);
}
if(x>=5&&x<10)
{
count++;
func(x-5);
}
if(x>=10&&x<50)
{
count++;
func(x-10);
}
if(x>=50&&x<100)
{
count++;
func(x-50);
}
if(x>=100)
{
count++;
func(x-100);
}
}