#include #define MAX_CAPACITY 150 #define MAX_ITEMS 7 typedef struct {// 物品结构体,包含重量、价值和性价比 int weight; int value; double ratio; // 性价比 } Item; void sortItems(Item items[], int n) {// 计算性价比并进行排序 for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (items[i].ratio < items[j].ratio) { // 交换物品 Item temp = items[i]; items[i] = items[j]; items[j] = temp; } } } } int main() { // 初始化物品 Item items[MAX_ITEMS] = { {35, 10, 0}, {30, 40, 0}, {60, 30, 0}, {50, 50, 0}, {40, 35, 0}, {10, 40, 0}, {25, 30, 0} }; for (int i = 0; i < MAX_ITEMS; i++) { // 计算性价比 items[i].ratio = (double)items[i].value / items[i].weight; } sortItems(items, MAX_ITEMS);// 按性价比排序 int capacity = MAX_CAPACITY; int maxValue = 0; printf("背包装入物品:\n"); // 装入背包 for (int i = 0; i < MAX_ITEMS; i++) { if (items[i].weight <= capacity) { printf("重量为:%d的物品被选中了\n", items[i].weight); maxValue += items[i].value; capacity -= items[i].weight; } } printf("最大价值为:%d\n", maxValue); return 0; }