用于迷宫生成的算法DFS:
1)只要有路径要推进堆栈,堆栈值是否应该改变?
例如,如下5x5 Maze:
0, 0, 0, 0, 0
0, 1, 0, 0, S
0, 1, 1, 1, 1
0, D, 0, 0, 0
0, 0, 0, 0, 0
让我们从源头说出我向下移动一步(CurrentCell)
堆栈将推入坐标(5,2)(当前源位置)
然后当我到达(5,3)时,currentCell将成为Source。 (5,3)
我是对的吗?
因此,当源移动到下一个左侧路径时,堆栈将推入当前坐标,即(5,3)等等,直到它到达死胡同而不是目的地。
如上例所示:
堆栈将首先推入
的值堆栈(0)(5,2) 堆栈(1)(5,3)
。 。 。
问题是,我该如何推进x和y?因为当前的问题是,即使我推入x和y,x和y仍保持原始值而不是不断更新。这就是为什么我的回溯不起作用的原因,我猜。
代码:
(random == 3) //To check for bottom neighbor
{
if (y+ 2 < column) //In case the column overshots
{
{
maze[x][y+ 1].setValue(1); //New Path Set as 1
myStack.push(maze[x][y]);
y= y+ 1;
}
}
}
答案 0 :(得分:0)
结果证明我是对的。
maze[x][y] = myStack.top();
myStack.pop();
cout << "Array X is : " << maze[x][y].getX();
cout << "Array Y is : " << maze[x][y].getY();
所有我需要的是弹出并检查我是否回溯了路线。谢谢大家的帮助!