第三次完全自己写并一次AC,哈哈哈,虽然用了两三个小时,还行吧,慢慢来,嘿嘿。
很多细节老是搞错,所以纠错花了很久,步骤一个一个输出看是哪里出错(纠错的时候还犯些小错误影响流畅性)。比如%f都给写成%d,该定义为double类型的定义成int······还有些其他的无法言说的低级错误······当然,中间也查了一些函数用法之类的,比如memset我不知道它可不可以用到int,double等的类型上,还有找那个返回数组最大值下标的函数,本来想看一下有没有现成的库函数,好像没有吧,所以自己写吧,也能更贴合要求
再炫一句感觉很酷的英语:I want you to be the best version of yourself.哈哈哈,开开心心睡觉去。
#include < stdio.h >
#include < string.h >
int sortIndex ( double[] );
int main()
{
int M , N , J[1000] , F[1000];
double JavaBeans;
int i , j;
double value[1000] , temp[1000];
int sort[1000];
while ( 1 )
{
scanf ( "%d %d" , &M , &N );
if ( M == -1 && N == -1 )
{
return 0;
}
i = 0;
JavaBeans = 0;
memset ( J , 0 , sizeof(J) );
memset ( F , 0 , sizeof(F) );
memset ( value , 0 , sizeof(value) );
memset ( temp , 0 , sizeof(temp) );
memset ( sort , 0 ,sizeof(sort) );
while ( i < N )
{
scanf ( "%d %d" , &J[i] , &F[i] );
value[i] = (double)J[i]/F[i];
i++;
}
memcpy ( temp , value , sizeof(value) ) ;
for ( j=0 ; j<1000 ; j++ )
{
sort[j] = sortIndex(temp);
if ( sort[j] == -1 )
{
break;
}
}
for ( j=0 ; j<1000 ; j++ )
{
if ( sort[j] == -1 )
{
break;
}
if ( M >= F[sort[j]] )
{
JavaBeans += J[sort[j]];
M -= F[sort[j]];
}
else
{
JavaBeans += M * value[sort[j]];
break;
}
}
printf ( "%0.3f\n" , JavaBeans );
}
return 0;
}
int sortIndex ( double a[] )
{
int index = 0;
double max = -1;
int i = 0;
for ( i=0 ; i<1000 ; i++ )
{
if ( a[i] > max )
{
max = a[i];
index = i;
}
}
if ( max == -1 )
{
index = -1;
return index;
}
a[index] = -1;
return index;
}