Если матрица ограничена 4 × n
, мы можем просто запустить динамическую программу.Предполагая, что наш выбор для любого столбца может быть только одним из:
a) x b) - c) - d) -
- x - -
- - x -
- - - x
e) x f) - g) x h) -
- x - -
x - - -
- x x -
Мы можем определить f(i, p)
, чтобы представить максимальную сумму вплоть до i
-го столбца, когда мы выбираем шаблон p
длянаш выбор элементов.Тогда:
f(i, a) = sum ith column elements pattern a + max(
f(i - 1, b),
f(i - 1, c),
f(i - 1, d),
f(i - 1, f),
f(i - 1, h)
)
f(i, b) = sum ith column elements pattern b + max(
f(i - 1, a),
f(i - 1, c),
f(i - 1, d),
f(i - 1, e),
f(i - 1, g),
f(i - 1, h)
)
etc.
Поскольку p
ограничен 8 вариантами выбора, пространство поиска равно O(n * 8) = O(n)
.