#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX_FRUITS 4
#define MAX_WEIGHT 20
typedef struct {
char name[20];
int weight;
int value;
float valuePerWeight;
} Fruit;
void swapFruits(Fruit *a, Fruit *b) {
Fruit temp = *a;
*a = *b;
*b = temp;
}
void sortFruits(Fruit fruits[], int numFruits) {
int i,j;
for (i = 0; i < numFruits - 1; ++i) {
for (j = 0; j < numFruits - i - 1; ++j) {
if (fruits[j].valuePerWeight < fruits[j + 1].valuePerWeight) {
swapFruits(&fruits[j], &fruits[j + 1]);
}
}
}
}
void selectOptimalFruits(Fruit fruits[], int numFruits, int maxWeight) {
int i;
for (i = 0; i < numFruits; ++i) {
fruits[i].valuePerWeight = (float)fruits[i].value / fruits[i].weight;
}
sortFruits(fruits, numFruits);
int remainingWeight = maxWeight;
int totalValue=0;
for (i = 0; i < numFruits; ++i) {
if (fruits[i].weight <= remainingWeight) {
printf("%s \n", fruits[i].name);
remainingWeight -= fruits[i].weight;
totalValue+=fruits[i].value;
}
}
printf("总价值为%d",totalValue);
}
int main() {
Fruit fruits[MAX_FRUITS] = {
{"苹果", 15, 300},
{"香蕉", 18, 180},
{"橘子", 10, 150},
{"猕猴桃", 9, 270}
};
printf("选择放进包中的水果为:\n");
selectOptimalFruits(fruits, MAX_FRUITS, MAX_WEIGHT);
return 0;
}