编辑代码

#include <stdio.h>  
  
#define MAX_FRUITS 4  
#define MAX_WEIGHT 20  
  
int fruits[MAX_FRUITS][2] = {{15, 300}, {18, 180}, {10, 150}, {9, 270}};  
  
int max(int a, int b) {  
    return (a > b) ? a : b;  
}  
  
int main() {  
    int totalWeight = 0;  
    int maxValue = 0;  
    int maxFruits[MAX_FRUITS];  
    int numFruits = 0;  
  
    for (int i = 0; i < MAX_FRUITS; i++) {  
        if (totalWeight + fruits[i][0] <= MAX_WEIGHT) {  
            maxValue += fruits[i][1];  
            totalWeight += fruits[i][0];  
            maxFruits[numFruits++] = i;  
        } else if (totalWeight + fruits[i][0] > MAX_WEIGHT && maxValue < fruits[i][1]) {  
            int diff = fruits[i][0] - (MAX_WEIGHT - totalWeight);  
            maxValue += diff * (fruits[i][1] / fruits[i][0]);  
        }  
    }  
  
    printf("装水果的策略:\n");  
    for (int i = 0; i < numFruits; i++) {  
        printf("水果名称:%s,装入重量:%dkg,价值:%d元\n", fruits[maxFruits[i]][2], fruits[maxFruits[i]][0], fruits[maxFruits[i]][1]);  
    }  
    printf("背包中装入水果的总价值:%d元\n", maxValue);  
  
    return 0;  
}