У меня есть ощущение, что эта проблема может быть сложной ... например, рассмотрим
*
***
****
***
*
Оптимальное решение - 4
B
BCC
AAAB
BDD
B
но я не нахожу простой способ предвидеть, исходя из местных соображений, что А должен остановиться перед последним квадратом. В оптимальном решении A, C и D являются немаксимальными прямоугольниками, и только B является максимальным. Вещи могут стать еще более сложными, например, с:
*
***
****
***
*
*****
* *
* *
, где оптимальным решением является
B
BCC
AAAB
BDD
B
EEEEE
F G
F G
, где только E является максимальным. Также выглядит, что на самом деле легко построить сколь угодно большие задачи, когда в оптимальном решении все, кроме одного, не максимальны.
Конечно, это не означает, что в IMO не существует простого решения ... как я уже говорил, это интуитивное чувство, но у IMO у любого решателя, который рассуждает с максимальными прямоугольниками, будут проблемы, если необходим абсолютный минимум.
Для несколько схожей, но и другой проблемы (я искал минимальное покрытие с не обязательно непересекающимися дисками), я использовал медленный жадный подход, всегда добавляя к решению диск, который содержался, и покрывая большинство еще не покрытых квадраты.
Для вашей проблемы я, вероятно, посмотрю, как это работает, добавляя самый большой прямоугольник каждый раз ... что, как показывают приведенные выше примеры, однако, в общем, это не будет оптимальным решением.