Домашнее задание, я просто спрашиваю, правильна ли моя логика, и если нет, то в каких случаях я пропускаю, а не как это сделать.
У меня есть задание, в котором мы должны были создать случайно сгенерированный лабиринт из файла данных, предоставленного нам.Каждой комнате присваивается номер от 1 до 100, и она имеет (до) 4 смежных комнат: север, восток, юг и запад.Комната без смежной комнаты будет иметь соседнюю комнату с отрицательным идентификатором.Наш «человек» случайно попадает в одну из этих комнат, и мы должны найти выход.Снаружи обозначен номер комнаты 0.
У меня есть все, кроме рекурсии, которая почти завершена.Это мое решение:
void Graph::findPath( Room * curRoom )
{
if( curRoom -> myNumber == 0 )
//Escaped!
else
{
if( curRoom -> North -> visited == false )
{
curRoom -> visited == true;
findPath( curRoom -> North )
}
if( curRoom -> East -> visited == false )
{
curRoom -> visited == true;
findPath( curRoom -> East )
}
if( curRoom -> South -> visited == false )
{
curRoom -> visited == true;
findPath( curRoom -> South )
}
if( curRoom -> West -> visited == false )
{
curRoom -> visited == true;
findPath( curRoom -> West )
}
}
}
Я думаю, что оно правильно.Меня беспокоит только то, что нам нужно распечатать правильный путь, который, как я знаю, можно сделать, но я не знаю, как это сделать, не печатая и неправильные.
Спасибо за ваше время.
Если какая-либо информация отсутствует, дайте мне знать, и я отвечу в спешке.