Я пытаюсь научить себя динамическому программированию и столкнулся с этой проблемой от MIT.Pebbling Шахматная доска с динамическим программированием
Нам дана шахматная доска, которая имеет 4 строки и n столбцов, а имеет целое число, записанное на каждом квадрате. Нам также дают набор из 2n гальки, и мы хотим разместить некоторые или все из них на шахматной доске (каждая галька может быть размещена ровно на один квадрат) , чтобы максимизировать сумму целых чисел в квадратах, которые покрытый галькой. Существует одно ограничение: для размещения гальки должно быть законным, никакие два из них не могут быть горизонтально или вертикально смежных квадратов (диагональная смежность в порядке).
(a) Определите количество юридических шаблонов, которые могут возникать в любом столбце (изолированно, игнорируя гальки в соседних столбцах) и описывайте эти шаблоны. Вызовите два шаблона совместимыми, если их можно разместить на соседних столбцах, чтобы сформировать юридическое размещение. Рассмотрим подзадачи, состоящие из первых k столбцов 1 k n. Каждой подзадаче может быть присвоен тип , который является шаблоном, имеющим место в последнем столбце.
(b) Используя понятия совместимости и типа, дайте алгоритм динамического программирования O (n) -time для вычисления оптимального размещения.
Хорошо, поэтому для части a: существует 8 возможных решений.
Для части b, я не уверен, но это - то, куда я направляюсь: SPlit в под-проблемы. Предположим, что i в n. 1. Определите Cj [i] как оптимальное значение, делясь столбцами 0, ..., i, так что столбец i имеет тип шаблона j. 2. Создайте 8 отдельных массивов из n элементов для каждого типа шаблона.
Я не уверен, куда идти отсюда. Я понимаю, что есть решения этой проблемы в Интернете, но решения мне кажутся не очень ясными.
Я вижу только 7 возможных решений для части а вы можете объяснить все 8 возможных решений? – akashchandrakar
Правовые положения о колонках: [- | - | - | -]; [X | - | - | -]; [- | X | - | -]; [- | - | X | -]; [- | - | - | X]; [X | - | X | -]; [X | - | - | X]; [- | X | - | X] (отвечает за полноту ради) – Sosavpm