用于回溯迷宫的堆栈

时间:2015-03-15 02:52:12

标签: c++ algorithm stack maze

用于迷宫生成的算法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;
                                    }
                               }
                           }

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();

所有我需要的是弹出并检查我是否回溯了路线。谢谢大家的帮助!