本段程序主要利用数据结构栈的先进后出特点,实现回溯求解迷宫路径问题。
#include<iostream>
#include<stack>
using namespace std;
//坐标类
struct Point
{
int x;
int y;
};
//地图类
template<int A>
struct Map
{
int (*p)[A];
int row;//行数
int col;//列数
};
//start起始点, end终止点
template<int A>
bool FindPath(Map<A> & map,Point & start,Point & end)
{
//先给图的外围加上障碍
for(int i = 0;i<=map.col;i++)
{
map.p[0][i] = map.p[map.row][i] = 1;
}
for(int i = 0;i<=map.row;i++)
{
map.p[i][0] = map.p[i][map.col] = 1;
}
//用于保存路径的栈
stack<Point> stackpath;
//用于方向选择的偏移量数组 按照顺时针的方向
Point offset[4];
offset[0].x = 0; offset[0].y = 1;//向右
offset[1].x = 1; offset[1].y = 0;//向下
offset[2].x = 0; offset[2].y = -1;//向左
offset[3].x = -1; offset[3].