Дан стержень длиной 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 для более подробной информации!
Рекомендуемые посты:
- Java Программа для Программы, чтобы найти область круга
- Java Программа для Программы для расчета площади тетраэдра
- Java Программа для Программы для вращения массива
- Java программа для быстрой сортировки
- Java-программа для ShellSort
- Java программа для снятия скриншотов
- Java программа для сортировки гребней
- Java программа для топологической сортировки
- Java-программа для суммирования цифр заданного числа
- Java-программа для решения проблемы подмножества сумм | DP-25
- Java программа для простого интереса
- Java-программа для линейного поиска
- Java-программа для сортировки циклов
- Java-программа для крыс в лабиринте | Откат-2
- Программа для преобразования Array в Set в Java
0.00 (0%) 0 votes