Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.12.2023
Сообщений: 1

Задача на нахождение оптимального решения (Вывод результата)

28.12.2023, 00:46. Показов 623. Ответов 1
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет
Задача:
Турист, собираясь в поход, закупает продукты в неделимых упаковках
известного веса Сj и калорийности aj
, j=1..n. Количество продуктов
каждого вида можно купить не более dj упаковок, j=1..n.
Определить план закупки продуктов, чтобы их суммарная калорийность
была не ниже К килокалорий, а общий вес был минимальным

Написал программу, но хочется чтобы в выводе результатов был выведен вектор либо просто перечисление сколько предметов такого-то типа. Как это можно реализовать?

Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <vector>
#include <algorithm>
 
int main() {
    int n; // количество видов продуктов
    std::vector<int> C; // вес одной упаковки каждого вида продукта
    std::vector<double> a; // калорийность одной упаковки каждого вида продукта
    std::vector<int> d; // максимальное количество упаковок каждого вида продукта, которое можно купить
    double K; // минимальная необходимая калорийность
 
    // Вводим данные
    std::cout << "Введите количество видов продуктов (n): ";
    std::cin >> n;
    C.resize(n);
    a.resize(n);
    d.resize(n);
    for (int i = 0; i < n; ++i) {
        std::cout << "Вес упаковки " << i + 1 << ": ";
        std::cin >> C[i];
        std::cout << "Калорийность упаковки " << i + 1 << ": ";
        std::cin >> a[i];
        std::cout << "Максимальное количество упаковок " << i + 1 << ": ";
        std::cin >> d[i];
    }
    std::cout << "Минимальная необходимая калорийность (К) в килокалориях: ";
    std::cin >> K;
 
    // Решаем задачу линейного программирования
    double total_weight = 0.0; // общий вес
    double total_calories = 0.0; // общая калорийность
    int x[n]; // переменная для количества упаковок каждого вида продуктов
    for (int j = 0; j < n; j++) {
        x[j] = 0;
    }
 
    while (total_calories < K) {
 
        // Используем метод ветвей и границ
        double best_bound = -1; // оптимальное решение
        int best_solution = -1;
        for (int m = 0; m < n; m++) {
            if (x[m] < d[m]) {
                double new_bound = (total_calories + a[m]) / C[m];
                    if (new_bound > best_bound) {
                        best_bound = new_bound;
                        best_solution = m;
                     }
                }
          }
 
          total_calories += a[best_solution];
          total_weight += C[best_solution] * x[best_solution];
          x[best_solution]++;
    }
 
    std::cout << "Минимальный общий вес: " << total_weight << std::endl;
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.12.2023, 00:46
Ответы с готовыми решениями:

Задача на поиск оптимального решения
Нужна помощь с задачей Т_Т В цистерне N литров молока. Есть бидоны объёмом 1, 5 и 6 литров. Нужно разлить молоко в бидоны так, чтобы все...

Задача на нахождение оптимального маршрута
Уважаемые, помогите, пожалуйста, новичку. Нужно реализовать программу, где будет изображение карты района города и требуется найти...

Нахождение одинаковых строк в двух файлах и вывод результата в третий файл
Помогите пожалуйста. Есть два тестовых файла, которые содержат строки (файлы большие, по 60k строк в каждом). Задача сравнить эти два...

1
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,007
28.12.2023, 05:48
Если я правильно понял, нужно вывести все n элементов массива x.

Не по теме:

Очередная "самостоятельно" написанная программа без понимания того, что написано? (вопрос риторический)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.12.2023, 05:48
Помогаю со студенческими работами здесь

Построение парето фронта и определение оптимального результата
Доброе время суток, есть реализация построения парето-фронта для двухкритериальной задачи. Вопрос 1: как выделить на нем якорные точки.? ...

Анализ оптимального решения
Организация выпускает четыре вида пользующихся спросом изделия, причем месячная программа выпуска составляет по 10 изделий тип 1 и 3, 200...

Поиск оптимального решения
Помогите с алгоритмом. Есть матрица смежности - С и матрица веса time, время цикла - sum Условие - на каждом рабочем месте выполняются...

Поиск оптимального решения
Поиск оптимального решения: критерий Ходжа Лемана и оптимистический критерий. Помогите разобраться в коде (написать комментарии) ...

Поиск оптимального решения
Приветствую всех! Прошу помощь в решении данной задачи: Для производства трех видов продукции предприятие использует два типа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru