Рассмотрим эту проблему:
Определена квадратная сетка, каждая клетка либо проходима (1), либо непроходима (0).
Сначала у нас есть просто связанное пространство в сетке с непроходимой границей, как это:
Затем мы начинаем помещать непроходимые препятствия различных размеров (например, 1x1, 2x2, ..) в проходимое пространство. После того, как каждое препятствие установлено, нам нужно проверить, подключено ли оставшееся проходимое пространство (т.е. убедитесь, что мы не разбили проходимое пространство на два или более отсоединенных пространства). Плитка тоже соединена по диагонали.
Дело в том, что после каждого размещения препятствий каждая оставшаяся проходимая плитка имеет путь, который соединяет ее с КАЖДЫМИ остальными проходимыми плитками.
Мне известно о возможности поиска путей между возможно отключенными точками, но я боюсь, что это может быть слишком неэффективно. Что меня интересует, так это быстрое тестирование.
Спасибо за любую помощь!