5 курс / СИАОД ЛР 3
.docxЛабораторная работа №3 «Задача о заполнении рюкзака»
В задаче о рюкзаке есть набор предметов. Каждый предмет имеет название, вес и ценность. Требуется сложить вещи с максимальной стоимостью в рюкзак, имеющий ограничение по весу.
Реализовать программу решающую задачу о заполнении рюкзака с помощью:
Рекурсивного метода;
Метода динамического программирования;
Жадного алгоритма.
Для жадного алгоритма реализовать стратегии:
заполняем в первую очередь предметами с максимальным весом (нечетные варианты)
заполняем в первую очередь предметами с максимальным соотношением цена/вес (четные варианты)
В программе должен присутствовать класс «Предмет», обладающий полями: название, вес, цена; и класс «Рюкзак», обладающим полями: максимальный вес, текущий вес, список предметов в рюкзаке.
Реализовать меню:
Заполнение списка предметов из файла
Добавление предмета
Изменение предмета
Удаление предмета
Задание максимального веса рюкзака
Просмотр содержимого рюкзака
Выбор способа решения задачи
Сравнение способов решения
В качестве дополнительного задания можно реализовать заполнение рюкзака с учетом габаритов вещей. Пользователь может задать размер рюкзака mxn и размер каждого предмета. В результате работы помимо максимального веса учитывается геометрическое наполнение рюкзака.
