代码如下,按照贪心写的,使用qsort进行的排序
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int zhong;
int jia;
double xing;
}te;
double cmp(const te *a,const te *b){
return ( *(double *)(&(a->xing)) - *(double *)(&(b->xing)));
}
int main(){
int T,N;
double H = 0;
te num[105];
scanf("%d%d",&N,&T);
for(int i = 0;i < N;++i){
scanf("%d%d",&num[i].zhong,&num[i].jia);
num[i].xing = 1.0 * num[i].jia / num[i].zhong;
}
//对结构体的 价格/重量 进行排序,前面的应被优先选取
qsort(num, N, sizeof(te), cmp);
for(int i = 0;i < N; ++i){
if(T >= num[i].zhong){
T -= num[i].zhong;
H += num[i].jia;
}
else{
H += (num[i].xing * T);
T = 0;
break;
}
}
printf("%.2lf\n",H);
return 0;
}