家庭作业,我只是问,如果我的逻辑是合理的,如果没有,我错过了什么情况,而不是如何去做。递归逃脱迷宫
我有一个任务,我们必须创建一个随机生成迷宫的数据文件给我们。每个房间都有一个介于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)
}
}
}
我认为我正确地拥有它。我唯一担心的是,我们需要打印出正确的路径,但我不知道如何在不打印不正确的路径的情况下执行此操作。
谢谢你的时间。
如果缺少任何信息,让我知道,我会回答,匆忙职位。
目前不打印任何东西,再加上如其他人在没有必要的,如果您应该改变。 – FailedDev
如果需要的话,因为外面是一个房间没有指向任何与它的NSEW指针,我不想访问错误的内存。但是我没有分享这些信息,对不起。 – Joshua
那么,如果你写了(curRoom - > myNumber!= 0){...}而没有其他的呢? – FailedDev