Помогите Написать код в visual studio на C++
Задача о рюкзаке
Имеется максимальная сумма(20), которую возможно потратить и максимальный вес(3000), который может выдержать рюкзак. Нужно заполнить рюкзак максимально ценными продуктами (с точки зрения питательной ценности), при условии, что данный продукт не может быть взят дважды, а также сам массив должен выбрать продукты какие продукты наиболее рационально взять(Необязательно чтобы он все продукты выбрал)
Название,вес,цена,питательная ценность
Мясо 50 3 166
Йогурт 200 2 200
Яйца 150 10 51
Чипсы 75 2 75
Шоколад 60 5 50
Орешки 90 3 170
Сникерс 25 1 20
Мороженое 40 3 70
По дате
По рейтингу
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
#include <iostream>
#include <vector>
#include <algorithm>
struct Product {
std::string name;
int weight;
int price;
int nutrition;
};
bool compareByNutrition(const Product& a, const Product& b) {
return a.nutrition > b.nutrition;
}
int main() {
std::vector<Product> products = {
{"Мясо", 50, 3, 166},
{"Йогурт", 200, 2, 200},
{"Яйца", 150, 10, 51},
{"Чипсы", 75, 2, 75},
{"Шоколад", 60, 5, 50},
{"Орешки", 90, 3, 170},
{"Сникерс", 25, 1, 20},
{"Мороженое", 40, 3, 70}
};
int maxWeight = 3000;
int maxBudget = 20;
// Сортируем продукты по питательной ценности (убывание)
std::sort(products.begin(), products.end(), compareByNutrition);
int currentWeight = 0;
int currentBudget = 0;
for (const auto& product : products) {
if (currentWeight + product.weight <= maxWeight && currentBudget + product.price <= maxBudget) {
std::cout << "Выбран продукт: " << product.name << std::endl;
currentWeight += product.weight;
currentBudget += product.price;
}
}
std::cout << "Общий вес: " << currentWeight << std::endl;
std::cout << "Общая цена: " << currentBudget << std::endl;
return 0;
}
Результат выполнения программы
