Самым простым (реализуемым) алгоритмом было бы просто сохранить стопку местоположений, в которых вы были, и маршрут, по которому вы выбирались, если только обратный поиск не даст вам эту информацию.
Чтобы вернуться назад, просто вытолкните старые места из стека и проверьте, нет ли еще выходов из этого места, пока вы не найдете старое место с непроверенным выходом.
Проводя постоянное тестирование выходов в одном и том же порядке каждый раз, если вы знаете, что возврат к определенному месту происходит вниз (т. Е. В прошлый раз, когда вы были в старом месте, вы спустились), тогда вы просто выбираете следующее направление после вниз .
Я не совсем уверен, что вы подразумеваете под , заходя слишком далеко , хотя, я бы предположил, что вы захотите вернуться в предыдущее место, где у вас есть непроверенные маршруты, разве это не то, что вы хотите? 1011 *
Обратите внимание, что если вы не попытаетесь отследить путь от начальной точки до вашего текущего местоположения и избегаете тех квадратов, когда вы пытаетесь найти новые маршруты, вы можете в конечном итоге идти по кругу, что в конечном итоге также сделает стек большой.
Простой рекурсивный метод, который помечает путь, по которому он идет, и никогда не входит в отмеченные области, может легко это сделать.
Кроме того, если ваша вещь , которая движется через лабиринт, немного умнее, чем просто способность двигаться и ударять (останавливаться) на стенах, так как она может видеть из своей текущей точки во всех направлениях, У меня есть другие алгоритмы, которые могут помочь.