Найти наибольший прямоугольный параллелепипед, содержащий только 1 в двоичном массиве NxNxN

Учитывая двоичный массив NxNxN (содержащий только 0 или 1), как мы можем получить наибольший прямоугольный параллелепипед с нетривиальным решением, т.е. за O(N^3 ) ?

--

Это та же задача, что Найти самый большой прямоугольник, содержащий только нули в двоичной матрице размера N×N, но в верхнем измерении. Кроме того, в моем случае самый большой прямоугольник может «пересекать край» массива, т.е. пространство похоже на тор для 2D-матрицы.

Для двумерного массива, если запись:

00111
00111
11000
00000
00111

решение, обозначенное «X», равно

00XXX
00XXX
11000
00000
00XXX

Я выполнил вычисления для двоичного массива NxN и нашел решение задачи о наибольшем прямоугольнике за O( N^2), следуя идее из http://tech-queries.blogspot.de/2011/03/maximum-area-rectangle-in-histogram.html. Но я не знаю, как применить его для 3D-массива.

--

Пример для массива 3x3x3, где решение "пересекает край":

111
100
011

111
001
111

011
110
011

решение должно быть:

1XX
100
0XX

1XX
001
1XX

0XX
110
0XX

12
задан Community 23 May 2017 в 12:16
поделиться