# include & lt; iostream> # include & lt; cassert> # include & lt; stack> # include & lt; vector> struct Pos { int _row; int _col; }; bool MinPath (vector,, MinPath) { 断言(! maze.empty ()); Pos> stack<路径; bool firstOrNo =,真的; vector 祝辞,tmp =,迷宫; while (迷宫(enrty._row] [enrty._col], !=, 3) { 时间=tmp 迷宫; path.push (enrty); while (! path.empty ()) { Pos cur =, path.top (); tmp [cur._row] [cur._col],=, 2; if (path.top () ._row ==, row 作用;1) { 迷宫(path.top () ._row] [path.top () ._col],=, 4; if (firstOrNo | |, path.size (), & lt;, minPath.size ()) { 时间=minPath 路径; 时间=firstOrNo 假; } while (! path.empty ()) { path.pop (); } 打破; }//上 Pos next =,坏蛋; next._row——; if (next._row 祝辞=,0,,,,next._row & lt;,行 ,,,next._col 的在=,0,,,,next._col & lt;坳 ,和tmp [next._row] [next._col],==, 0) { path.push(下); 继续; }//下 next =,坏蛋; next._row + +; if (next._row 祝辞=,0,,,,next._row & lt;,行 ,,,next._col 的在=,0,,,,next._col & lt;坳 ,和tmp [next._row] [next._col],==, 0) { path.push(下); 继续; }//左 next =,坏蛋; next._col——; if (next._row 祝辞=,0,,,,next._row & lt;,行 ,,,next._col 的在=,0,,,,next._col & lt;坳 ,和tmp [next._row] [next._col],==, 0) { path.push(下); 继续; }//右 next =,坏蛋; next._col + +; if (next._row 祝辞=,0,,,,next._row & lt;,行 ,,,next._col 的在=,0,,,,next._col & lt;坳 ,和tmp [next._row] [next._col],==, 0) { path.push(下); 继续; } 迷宫(path.top () ._row] [path.top () ._col],=, 3; path.pop (); }//while !空(路径) },//while 大//在地图中标出最短路径 stack
迷宫问题并求最短路径