Задать вопрос
@Atllantis

Кто хочет поломать немного мозг?

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

В итоге должно получиться так:
0c04f6134431464cb6343597bee997b0.png
Если бы не было спаяных квадратов, то решение было бы простым:
Проходим циклом по оси X, и в каждой клетке (по оси Х) проверяем все ячейки по оси У (снизу вверх). Считаем кол-во пустых клеток до квадрата и опускаем квадрат вниз на подсчитанное кол-во пустых клеток.
Но как быть со спаянными квадратами?
  • Вопрос задан
  • 444 просмотра
Подписаться 2 Оценить 1 комментарий
Ответ пользователя xmoonlight К ответам на вопрос (5)
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Это обычный тетрис в невесомости.
Вначале поднимаем все фигуры вверх и заполняем строку за строкой.
Если надо лучше - уже комбинаторика.
Ответ написан
Комментировать