![]() |
Рекурсия
Exit form the maze
Robot is standing at the (0,0) position of the matrix maze. Your task is to find the answer to the question - "Is it possible to find the exit from the given maze?". Exit exists only in case you can find the way from (0,0) to (n-1,m-1) point walking only through blank places(".") Note. Use recursion for solving this problem. Input: First line that contains N and M (2 <= n,m <= 6). That matrix NxM that contain only "#" and ".". "#" means wall(robot can not go throught the wall) "." means blank place where robot can walk Output: Your output have to be contain "YES" if the exit exists and "NO" in other case. Examples: Input 1: 3 3 .#. ..# #.. Output 1: YES Input 2: 6 5 ..... ####. ..... .###. ....# ###.. Output 2: YES Input 3: 3 3 .#. ..# .#. Output 3: NO |
Hardcore, Язык общения на конференции - русский. Правила 2.3. Озвучьте вашу задачу на русском языке.
|
Drongo,
Цитата:
Hardcore, алгоритмов поиска пути, тем более рекурсивных, много. Опять же не видно рассуждений, и попыток решить эту задачу самостоятельно. |
вроде был такой раздел "сделайте мне лабу"
|
Перевод.
Вопрос задачи: наити выход роботу из лабиринта. Робот проходит только через (.), а это (#) стенка через которые он не может пройти. Надо написать алгоритм прохода робота через лабиринт. Условие решить через рекурсию. Первая линия включает в себя N и M (2 <= n,m <= 6). Это матрица NxM состайт только из "#" и ".". "#" стены "." проход Пример: Ввод: 3 3 .#. ..# #.. Вывод YES Ввод 2: 6 5 ..... ####. ..... .###. ....# ###.. Вывод 2: YES Ввод 3: 3 3 .#. ..# .#. Вывод 3: NO Я бы начал рассуждать, но я незнаю даже с чего начать рассуждать. |
Представляете лабиринт в виде графа, вершина которого - клетка, по которой можно пройти, рёбра из неё к соседним таким же клеткам. Дальше рекурсивный алгоритм обхода графа в глубину. Запускаете алгоритм из (0,0). Если (m-1,n-1) посещена - проход есть, нет - плохой лабиринт.
|
Hardcore, если не знаешь, с чего начать, начни с того, что знаешь. Если встретилось новое слово, рекурсия например, спроси об этот гугл, википедию и иные источники.
Ищи прям по словосочетаниям Аалгоритм, лабиринт, рекурсивный алгоритм поиска пути и т.д. Иначе ты перед каждой новой задачей или словом будешь впадать в ступор и звать о помощи говоря "я ничего не знаю" (без обид опять таки) |
Спасибо за совет. Я не обижаюсь.
|
Найди выход из лабиринта, можно всегда если использовать правило правой руки(кажется так это называется). Тоесть, прикоснувшись правовй рукой к стене и не отрывая руки идти вперёд, если выход из лабиринта есть, то к нему выйдешь обязательно, если же пространство замкнутое\тупик, то вернёшься к тому месту, откуда начал шествие. Другими словами, нужно проверять наличие стены(#) справа, если символ равен # это стена, если же . то проход. Я решал подобную задачу года три назад, и по-дилетантски, решил только пол задачи, ту часть, где производится обход лабиринта, но часть, которая печатает по порядку путь, заменяя точки . на * решить не смог. Если кто подскажет идеей, как это сделать, думаю, сделаю, не люблю незаконченые дела оставлять. :) В функции printSteep пытался сделать вывод каждого шага, но не получилось, сделал только вывод координат.
Код:
// Программа Прохождения лабиринта |
Drongo, здесь не лабиринт в обычном понимании этого слова. Надо пройти из (0,0) в (m-1,n-1).
|
Время: 09:53. |
Время: 09:53.
© OSzone.net 2001-