Мой мозг уже выкипает... И я никак не могу придумать алгоритм для слудующего:
И так, есть координатная сетка с ячейками/пикселями/квадратами и т.п. (придумай ещё!):
Нужно все квадраты (красные) разместить друг на друге внизу.
Всё вроде бы просто, но есть одно НО. Есть спаяные квадраты, часть которых не может быть ниже или выше другой.
Например:
Квадраты в ячейках [5,2] и [5,3] опустятся на 1 ячейку вниз по оси Y.
Тогда спаяный квадрат должен будет опуститься только на две ячейки вниз.
В итоге должно получиться так:
Если бы не было спаяных квадратов, то решение было бы простым:
Проходим циклом по оси X, и в каждой клетке (по оси Х) проверяем все ячейки по оси У (снизу вверх). Считаем кол-во пустых клеток до квадрата и опускаем квадрат вниз на подсчитанное кол-во пустых клеток.
Но как быть со спаянными квадратами?