杭电acm的 FatMouse✀ Trade问题 我的代码用了好多测试数据都显示结果是对的,用c语言写的,但是提交的时却

2025-02-14 11:05:11
推荐回答(3个)
回答(1):

这是算法,思路挺简单的!
#include
#include
int main()
{
int M,N,*j,*f,i,k,t;
float sum=0;
scanf("%d%d",&M,&N);
while(M!=-1&&N!=-1)
{
j=malloc(N*sizeof(int));
f=malloc(N*sizeof(int));
for(i=0;i {
scanf("%d%d",&j[i],&f[i]);
for(k=i;k>=1;k--)
{
if((float)j[k]/(float)f[k]>(float)j[k-1]/(float)f[k-1])
{
t=j[k];
j[k]=j[k-1];
j[k-1]=t;
t=f[k];
f[k]=f[k-1];
f[k-1]=t;
}
}
}

i=0;
while(M>0&&i {
if(f[i]<=M)
{
sum+=j[i];
M=M-f[i];
i++;

continue;
}
else if(f[i]>M)
{
sum=M*((float)j[i]/(float)f[i])+sum;

break;
}

}
printf("%.3f\n",sum);
sum=0;
free(j);
free(f);
scanf("%d%d",&M,&N);
}
return 0;
}

回答(2):

这是我的代码,虽然是c++做的,但思路就是这样。另外你要多用函数,你自己写的排序可能不正确。不过c里面不是可以用qsort函数嘛。这道题很明显用结构体来做可以省事很多嘛,你想的太多了
#include
#include
#include
#include

using namespace std;

struct javabeans
{
double j;
double f;
double max;
};

bool cmp(struct javabeans a,struct javabeans b)
{
if(a.max!=b.max)
return a.max>b.max;
}

int main()
{
int i,m,n,k;
struct javabeans exam[1000];

while(1)
{
cin>>m>>n;
if(m==-1&&n==-1)
break;

for(i=0;i cin>>exam[i].j>>exam[i].f;

for(i=0;i exam[i].max=exam[i].j/exam[i].f;

sort(exam,exam+n,cmp);

double sum=0;
for(i=0;i if(m-exam[i].f>0)
{
m-=exam[i].f;
sum+=exam[i].j;
}
else
{
sum+=exam[i].max*m;
break;
}
printf("%.3f\n",sum);

}
return 0;
}

回答(3):

你是吖沣吧,没人帮你解答的,老实把悬赏金给我吧~~~