Top.Mail.Ru
Ответы

Помогите Написать код в 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; 
} 

Результат выполнения программы