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

显示wronganswer#include<stdio.h>voidmain(){inta[1001],b[1001],i,j,n,a1,b1,weight;double... 显示wrong answer
#include<stdio.h>
void main(){
int a[1001],b[1001],i,j,n,a1,b1,weight;

double price[1001],sum,w,price1;
//freopen("text.txt","r",stdin);
while(1){
scanf("%d%d",&weight,&n);
if((weight==-1&&n==-1)) break;
if(n==0) continue;
scanf("%d%d",&a[0],&b[0]);
price[0]=(double)a[0]/b[0];
for(i=1;i<n;i++){
scanf("%d%d",&a1,&b1);
price1=(double)a1/b1;
if(price1>price[i-1]){
price[i]=price[i-1];
a[i]=a[i-1];
b[i]=b[i-1];
for(j=i-2;j>=0;j--){
if(price1>price[j]){
price[j+1]=price[j];
a[j+1]=a[j];
b[j+1]=b[j];
}
else break;
}
price[j+1]=price1;
a[j+1]=a1;
b[j+1]=b1;
}
else{
price[i]=price1;
a[i]=a1;
b[i]=b1;
}
}

sum=0;
i=0;
w=weight;
while(w>0&&i<n){
if(w>b[i]){
w=w-b[i];
sum+=a[i];
}
else{
sum+=w*price[i];
w=0;
}
i++;
}
printf("%.3lf\n",sum);

}
}
不好意思 代码没有注释 我是用插入排序算法进行排序的,还有就是我要的是改错
展开
 我来答
czkdcs
2011-07-19
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
这是算法,思路挺简单的!
#include<stdio.h>
#include<stdlib.h>
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<N;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<N)
{
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;
}
欧文君爱分享
2011-07-19 · TA获得超过9758个赞
知道小有建树答主
回答量:917
采纳率:0%
帮助的人:1066万
展开全部
这是我的代码,虽然是c++做的,但思路就是这样。另外你要多用函数,你自己写的排序可能不正确。不过c里面不是可以用qsort函数嘛。这道题很明显用结构体来做可以省事很多嘛,你想的太多了
#include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>

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<n;i++)
cin>>exam[i].j>>exam[i].f;

for(i=0;i<n;i++)
exam[i].max=exam[i].j/exam[i].f;

sort(exam,exam+n,cmp);

double sum=0;
for(i=0;i<n;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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f6aa134
2011-07-19
知道答主
回答量:3
采纳率:0%
帮助的人:4856
展开全部
你是吖沣吧,没人帮你解答的,老实把悬赏金给我吧~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式