题目为FatMouse'trade 的一个简单贪心题,测试数据都是对的,但是为什么一直ac不了?麻烦大神们看看啊~~
#include<stdio.h>#include <stdlib.h>
struct s{
double javabean;
double food;
double price;//性价比
}s[1000];
//快排函数
int cmp(const void* a,const void* b){
return ((struct s*)b)->price-((struct s*)a)->price;
}
int main(){
double m;
int n,i;
double result=0;
while(scanf("%lf%d",&m,&n)!=EOF){
if(m==-1&&n==-1) break;//最后一组数据
for(i=0;i<n;i++){
scanf("%lf%lf",&s[i].javabean,&s[i].food);
s[i].price=s[i].javabean/s[i].food;
//printf("%.f %.f %.3f",s[i].javabean,s[i].food,s[i].price);
}//输入数据
qsort(s,n,sizeof(s[0]),cmp);//按性价比从大到小进行排序
/*for(i=0;i<n;i++){
printf("%.f %d %.3f\n",s[i].javabean,s[i].food,s[i].price);
}*/
result=0;
for(i=0;i<n;i++){
if(s[i].food<=m){
result+=s[i].javabean;
m-=s[i].food;
}else if(s[i].food>m&&m>0){
result+=s[i].price*m;
m=0;
}//if-else
}//for
printf("%.3lf\n",result);
}//while
return 0;
}