Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методички / Лаб_3_Динамическое_программирование.docx
Скачиваний:
0
Добавлен:
28.06.2026
Размер:
30.27 Кб
Скачать

Лабораторная работа 2: Динамическое программирование и жадные алгоритмы

Цель работы:

  1. Изучить признаки задач динамического программирования и жадных алгоритмов, научиться выбирать подход к решению, реализовывать алгоритмы на Python и сравнивать их эффективность.

Задание 1. Типы данных, арифметика

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

  1. Найти наибольшую сумму чисел в подотрезке массива.

  2. Выбрать максимальное количество непересекающихся мероприятий из заданного расписания.

  3. Найти минимальную стоимость размена суммы с использованием набора монет [1, 3, 4].

  4. Найти длину наибольшей общей подпоследовательности двух строк.

  5. Определить минимальное количество заправок, необходимое для прохождения маршрута.

  6. Выбрать набор предметов максимальной стоимости при ограничении на общий вес.

Задание 2. Максимальная сумма непрерывного подмассива

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

Требуется реализовать программу, которая находит этот период, выводит максимальную сумму прибыли и список значений, входящих в найденный непрерывный участок.

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

daily_profit = [ 12, -5, 7, 9, -14, 3, 8, -2, 6, -11, 15, 4, -7, 10, 2, -9, 5, 13, -6, 1, 11, -3, 7, -8, 14, 6, -4, 9, -10, 3, 12, -5, 8, 2, -13, 7, 4, -6, 10, 1, -9, 15, 5, -2, 11, -7, 6, 13, -4, 8, 3, -12, 9, 14, -5, 2, 7, -8, 10, 4, -6, 12, 1, -11, 5, 13, -3, 8, 15, -7, 2, 9, -4, 6, -10, 14, 3, -5, 11, 7, -9, 4, 12, -6, 8, 1, -13, 10, 5, -2, 15, 6, -7, 9, 3, -11, 13, 4, -8, 12, 2, -5, 10, 7, -14, 6, 1, -9, 15, 3, -4, 11, 8, -6, 14, 5, -10, 2, 13, -7, 9, 4, -3, 12, -8, 6, 15, -5, 1, 10, -11, 7, 3, -6, 14, 8, -2, 13, 5, -9, 12, 4, -7, 11, 2, -5, 15, 6, -10, 3, 9, -4, 14, 7, -8, 1, 13, -6, 10, 5, -12, 8, 2, -9, 15, 4, -3, 11, 6, -7, 12, 5, -10, 14, 1, -4, 9, 3, -11, 13, 7, -6, 10, 2, -8, 15, 4, -5, 12, 6, -9, 14, 3, -7, 11, 1, -10, 8, 5, -2, 13, 7, -4, 15, 6, -11, 9, 2, -8, 12, 4, -5, 14, 1, -9, 10, 3, -6, 13, 8, -7, 11, 5, -3, 15, 2, -10, 12, 6, -4, 9, 14, -8, 1, 13, -5, 7, 3, -12, 10, 4, -6, 15, 8, -9, 11, 2, -7, 14, 5, -3, 12, 6, -10, 13, 1, -4, 9, 7, -8, 15, 3, -5, 11, 4, -6, 14, 2, -9, 10, 8, -7, 13, 5, -11, 12, 1, -3, 15, 6, -4, 9, 14, -8, 2, 11, -5, 7, 3, -10, 13, 4, -6, 12, 8, -9, 15, 1, -7, 10, 5, -3, 14, 6, -11, 9, 2, -4, 13, 7, -8, 12, 3, -5, 15, 4, -10, 11, 6, -2, 14, 8, -7, 9, 1, -6, 13, 5, -3, 12, 7, -9, 15, 2, -4, 10, 6, -8, 14, 3, -5, 11, 4, -7, 13, 8, -10, 12, 1, -6, 9, 5, -3, 14, 7 ]