写了一段代码,但我没法验证它是否正确
程序代码:
程序代码:#include <stdio.h>
typedef struct {
unsigned a;
unsigned b;
} pair;
static pair foo_( pair p[], unsigned n, unsigned m, pair cur )
{
if( m == 0 )
return cur;
double cpr = 0;
unsigned index = 0;
for( unsigned i=0; i!=n; ++i )
{
if( p[i].a != 0 )
{
if( cpr < (p[i].a + cur.a)*1.0/(p[i].b + cur.b) )
{
cpr = (p[i].a + cur.a)*1.0/(p[i].b + cur.b);
index = i;
}
}
}
pair t = { p[index].a+cur.a, p[index].b+cur.b };
p[index].a = 0;
return foo_(p,n,m-1,t);
}
double foo( pair p[], unsigned n, unsigned m )
{
pair r = foo_( p, n, m, (pair){0,0} );
return r.a*1.0/r.b;
}
int main( void )
{
unsigned t;
scanf( "%u", &t );
for( unsigned i=0; i!=t; ++i )
{
pair p[10000];
unsigned n, m;
scanf( "%u%u", &n, &m );
for( unsigned j=0; j!=n; ++j )
scanf( "%u%u", &p[j].a, &p[j].b );
printf( "Case #%u: %.2f\n", i+1, foo(p,n,m) );
}
}






