我是C语言初学者,我想问一道usaco上的题,C语言的,哪位耐心的高手帮我看看我的程序错在哪了

2024-11-25 03:19:37
推荐回答(1个)
回答1:

#include
struct conio{
long int num;
int value;
};
long int sum=0;
void main()
{
int operation(struct conio a[],int i,int );
struct conio a[20];
int n,c,i,t;//n表示不同的面额总数,c表示每个星期给的零花钱数目;
scanf("%d%d",&n,&c);
for(i=0;i {
scanf("%ld%d",&a[i].num,&a[i].value);
sum=a[i].num*a[i].value+sum;
}
t=operation(a,n,c);
printf("%d\n",t);
}
int operation(struct conio a[],int i,int c)
{
int j,t=0,b;
for(j=i-1;j>=0;j--)
{
if(a[j].num>0)
{
if(a[j].value>=c)
{
t=t+a[j].num;
sum=sum-a[j].num*a[j].value;
a[j].num=0;
}
else
{
while(a[j].num&&sum>c)
{
b=c;
while(b>a[j].value&&a[j].num)
{
b=b-a[j].value;
a[j].num-=1;
sum=sum-a[j].value;
}
if(j>=1)
{
while(b>0&&a[j-1].num)
{
b=b-a[j-1].value;
a[j-1].num-=1;
sum=sum-a[j-1].value;
}
}
else
{
while(a[j].num&&b)
{
b=b-a[j].value;
a[j].num-=1;
sum=sum-a[j].value;
}
}
if(b<=0)
t++;
else
{
t++;
a[j].num-=1;
sum=sum-a[j].value;
}
}
}
}
}
return t;
}