Все ли прямоугольники одинаковой высоты? Если они есть, и проблема состоит только в том, в какую строку помещать каждый прямоугольник, то проблема сводится к серии ограничений по всем парам прямоугольников (X, Y) формы «прямоугольник X не может находиться в той же строке прямоугольник Y ", когда прямоугольник X перекрывается в направлении х с прямоугольником Y.
Алгоритм «жадный» для этого сортирует прямоугольники слева направо, а затем присваивает каждому прямоугольнику по очереди строку с наименьшим номером, в которую он помещается. Поскольку прямоугольники обрабатываются слева направо, нужно только беспокоиться о том, будет ли левый край текущего прямоугольника перекрывать какие-либо другие прямоугольники, что несколько упрощает алгоритм обнаружения перекрытия.
Я не могу доказать, что это дает оптимальное решение, но, с другой стороны, я не могу даже думать о каких-либо контрпримерах. Кто-нибудь? * * 1005