永发信息网

ACM 杭电FatMouse' Trade 跪求高手帮我看看,哪里出错了额?是我的冒泡排序错了吗?

答案:2  悬赏:50  手机版
解决时间 2021-01-31 23:26
  • 提问者网友:你给我的爱
  • 2021-01-31 19:01
ACM 杭电FatMouse' Trade 跪求高手帮我看看,哪里出错了额?是我的冒泡排序错了吗?
最佳答案
  • 五星知识达人网友:街头电车
  • 2021-01-31 19:38
#include
int main(void)
{
int m,n,i,j,t;
int k;
int J[1050];
int F[1050];
double sum;
while(scanf("%d%d",&m,&n)!=EOF&&m!=-1&&n!=-1)
{
memset(J,0,sizeof(J));
memset(F,0,sizeof(F));
for(i=0;i {
scanf("%d%d",&J[i],&F[i]);

}
for(i=0;i {
for(j=i+1;j {
if((J[i]/(double)F[i])<(J[j]/(double)F[j]))
{
t=J[i];
J[i]=J[j];
J[j]=t;
t=F[i];
F[i]=F[j];
F[j]=t;
}

}
}
sum=0.0;
i=0;
k=m;
while(i {
if(k>=F[i]) // 带个等号
{
sum+=(double)J[i];
k=k-F[i];
}
else
{ sum+=k*(J[i]/(double)F[i]);
break;
}
i++;
}
printf("%.3lf\n",sum);
}
}
全部回答
  • 1楼网友:玩家
  • 2021-01-31 21:04
用贪心法做排序是对了不过排的数组不对,应该用那个比值作为排序判断,然后分别对两个数组进行排序否则你一开始求出f来放到数组里,后面又要把它乘进去,会
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯