У меня есть рекурсивный алгоритм решения лабиринта, который может успешно пройти через лабиринт. Единственная проблема в том, что я не могу найти способ сохранить кратчайший путь между начальной и конечной точками. Как мне сохранить координаты кратчайшего пути?
Это рекурсивная функция
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
. - person chris   schedule 20.05.2012std::vector Solve_Maze(int coorx, coory, std::vector path)
. - person jedwards   schedule 20.05.2012