«Задача о рюкзаке»
Цель – реализовать приложение, позволяющее решать задачу «о рюкзаке» с помощью различных алгоритмов. Приложение должно состоять из двух компонент:
В основной программе происходит подключение библиотеки (статически или динамически). Для успешного использования библиотеки находящийся в ней класс должен реализовывать заданный интерфейс.
Шаги выполнения задания.
1.Создать на языке F# библиотеку с одним классом, реализующим заданный интерфейс. Реализация метода должна решать задачу «о рюкзаке» с помощью заданного алгоритма.
При реализации алгоритма необходимо следовать функциональному стилю (в частности, не использовать изменяемые переменные (mutable) и т.п.).
2.Создать на языке C# (или C++) оконное приложение, позволяющее подключать различные библиотеки (статически, внося минимальные изменения в программный код, либо динамически, без изменения программного кода).
Также основная программа должна позволять:
Код программ должен быть структурирован, снабжен комментариями. Должны использоваться осмысленные идентификаторы.
Описание задачи «о рюкзаке». Дан набор из N предметов, для каждого предмета известна его масса mi и стоимость ci. Также задана вместимость рюкзака M. Необходимо найти набор предметов, суммарная масса которых не превосходит M, а суммарная стоимость максимальна.
Дано: целое число M, вектор масс mi (N целых чисел), вектор стоимостей ci (N целых чисел).
Получить: список номеров i выбранных предметов.
Возможные алгоритмы решения: точный переборный и приближенный «жадный». Описание задачи и возможных алгоритмов можно посмотреть на сайте: https://ru.wikipedia.org/wiki/Задача_о_ранце
(см. методы решения «Полный перебор» и "Жадный алгоритм").
| Гарантия на работу | 1 год |
| Средний балл | 4.53 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |