我有一个递归的迷宫解算器算法,可以成功地通过迷宫的方式。唯一的问题是我找不到一种方法来保存起点和终点之间的最短路径。我将如何保存最短路径的坐标?在递归迷宫解算器中保存路径坐标?
这是递归函数
void Solve_Maze(int coorx,int coory) {
if((coorx>=0)&&(coorx<l)&&(coory>=0)&&(coory<w)) {
if((Map[coorx][coory]==Start)||(Map[coorx][coory]==path)) {
Map[coorx][coory]=visited;
Solve_Maze(coorx+1,coory);
Solve_Maze(coorx-1,coory);
Solve_Maze(coorx,coory+1);
Solve_Maze(coorx,coory-1);
}else if(Map[coorx][coory]==End) {
delete Map;
Solved=true;
}
}
}
添加矢量来存储我得到这个输出
(1,2)
(2,2)
(3,2)
(4,2)
(5,2)
(6,2)
(7,2)
(8,2)
(9,2)
(7,3)
(7,4)
(7,5)
(7,6)
(8,6)
(8,7)
(9,7)
(10,7)
它存储所有的坐标,但它甚至存储路径的坐标的坐标后我们不想采取((7,2)(8,2)(9,2)然后回到(7,3))。有没有一种方法可以存储最短路径?
东西让你在正确的方向:'std :: vector'和'std :: vector :: push_back'。 – chris
你的算法看起来不错,它应该找到适当调整的最短路径。我同意克里斯的建议,并进一步建议你将方法原型改为'std :: vector Solve_Maze(int coorx,coory,std :: vector path)'。 – jedwards
我必须有两个向量(一个用于x值,一个用于y值)?这个词与问题的递归方面,因为如果算法搜索不同的路径,然后最短的坐标也将被保存。 –