只有第一个过了,有大佬能解惑下吗
查看原帖
只有第一个过了,有大佬能解惑下吗
306596
我啥也不会楼主2020/11/26 00:05

代码如下,按照贪心写的,使用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;
}


2020/11/26 00:05
加载中...