结合结构体,贪心,浮点数做分母可为零。贪心的标准要选对。
#include<stdio.h>
#include<algorithm>
using namespace std;
struct note {
double java;
double food;
double ratio;
} s[1001];
bool judge(note a,note b) {
return a.ratio>b.ratio;
}
int main() {
double n,m;
while(scanf("%lf %lf",&n,&m)&&n!=-1&&m!=-1) {
double sum=0;
for(int l=0; l<m; l++) {
scanf("%lf %lf",&s[l].java,&s[l].food);
s[l].ratio=s[l].java/s[l].food;//此处标记
}
sort(s,s+(int)m,judge);
for(int l=0; l<m; l++) {
if(n>=s[l].food) {
sum=sum+s[l].java;
n=n-s[l].food;
} else {
sum=sum+n*s[l].ratio;
break;
}
}
printf("%.3lf\n",sum);
}
return 0;
}

本文介绍了一个使用贪心算法解决的食物选择问题。通过定义结构体存储每种食物的营养价值和消耗量,并计算每单位食物提供的营养效益比,利用排序来实现最优选择。该程序实现了当总食物量有限时如何最大化获得的总营养价值。
521

被折叠的 条评论
为什么被折叠?



