编辑代码

#include <iostream>
using namespace std;

struct fruit{
    string name;
    int weight;
    int value;
};

void sort(struct fruit fru[],int p[],int fruitCount){
    for(int i = fruitCount-1;i > 0;--i){
        for (int j = 0;j < i; ++j){
            if(p[j] < p[j+1]){
                int temp = p[j];
                p[j] = p[j+1];
                p[j+1] = temp;
                struct fruit frutemp = {fru[j].name,fru[j].weight,fru[j].value};
                fru[j] = fru[j+1];
                fru[j+1] = frutemp;
            }
        }
    }
}

void getMaxValueForBackpack(int capacity,struct fruit fru[],int fruitCount){
    int p[fruitCount-1];
    for (int i = 0;i < fruitCount; ++i){
        p[i] = fru[i].value / fru[i].weight;
    }
    sort(fru,p,fruitCount);

    int sum = 0;
    for (int i = 0;i < fruitCount;i++){
        if(capacity > fru[i].weight){
            capacity -= fru[i].weight;
            sum += fru[i].value;
        }else{
            sum += capacity*p[i];
            break;
        }
    }

    cout  << "max value:" << sum << endl;
}

int main() {
    struct fruit fru[4]={
        "苹果", 15, 300,
        "香蕉", 18, 180,
        "橘子", 10, 150,
        "猕猴桃", 9, 270
    };
    getMaxValueForBackpack(20,fru,4);
	return 0;
}