Дан стержень длиной n дюймов и массив цен, содержащий цены на все кусочки размером меньше n. Определите максимальное значение, которое можно получить, разрезая прут и продавая кусочки. Например, если длина стержня равна 8, а значения разных кусков заданы следующим образом, то максимально достижимое значение равно 22 (путем разрезания на два отрезка длиной 2 и 6).
length | 1 2 3 4 5 6 7 8 -------------------------------------------- price | 1 5 8 9 10 17 17 20
И если цены следующие, то максимальная доступная стоимость равна 24 (путем разрезания на восемь частей длины 1)
length | 1 2 3 4 5 6 7 8 -------------------------------------------- price | 3 5 8 9 10 17 17 20
|
Выход:
Maximum Obtainable Value is 22
Учитывая вышеописанную реализацию, ниже приведено дерево рекурсии для стержня длиной 4.
cR() ---> cutRod() cR(4) / / / / cR(3) cR(2) cR(1) cR(0) / | / | / | / | cR(2) cR(1) cR(0) cR(1) cR(0) cR(0) / | | / | | cR(1) cR(0) cR(0) cR(0) / / CR(0)
В приведенном выше дереве частичной рекурсии cR (2) решается дважды. Мы видим, что есть много подзадач, которые решаются снова и снова. Поскольку те же самые подзадачи вызываются снова, эта проблема имеет свойство Перекрывающиеся подзадачи. Таким образом, задача обрезки стержней имеет оба свойства (см. Это и это ) задачи динамического программирования. Как и другие типичные проблемы динамического программирования (DP) , повторных вычислений с одинаковыми подзадачами можно избежать, построив временный массив val [] снизу вверх.
|
Выход:
Maximum Obtainable Value is 22
Пожалуйста, ознакомьтесь с полной статьей на Cutting a Rod | DP-13 для более подробной информации!
Рекомендуемые посты:
- Программа Python для печати цифр
- Python | Извлечь ключ-значение из словаря в переменные
- Программа Python для преобразования времени из 12-часового формата в 24-часовой
- Google Chrome Dino Bot с использованием распознавания изображений | питон
- Python | Использование __slots__
- Python — Суммирование списка строк с плавающей точкой
- Python | Анимированный баннер GeeksForGeeks
- Python | Разделить элементы списка по суффиксу
- Программа Python для выбора сортировки
- Программа Python для Bubble Sort
- Программа Python для вставки сортировки
- Программа Python для сортировки кучи
- Программа Python для подсчета сортировки
- Программа Python для сортировки по Radix
- Программа Python для п-го числа Фибоначчи
0.00 (0%) 0 votes