题目:给出一个M*N的迷宫,0代表路,1代表墙。S和G分别代表初始位置和出口。求走出迷宫的最短路径。若走不出则返回-1.
思路:经典的广度优先搜索。
/*
初始化队列q;
初始化标记矩阵mask;
起点start入队;
while(q非空){
q队首元素tmp出队;
if(tmp==目标状态){
找到解, 退出循环;
};
for(){
所有与tmp相邻且未被访问的点入队;
}
标记tmp为已访问;
}
*/
C++代码
题目:给出一个M*N的迷宫,0代表路,1代表墙。S和G分别代表初始位置和出口。求走出迷宫的最短路径。若走不出则返回-1.
思路:经典的广度优先搜索。
/*
初始化队列q;
初始化标记矩阵mask;
起点start入队;
while(q非空){
q队首元素tmp出队;
if(tmp==目标状态){
找到解, 退出循环;
};
for(){
所有与tmp相邻且未被访问的点入队;
}
标记tmp为已访问;
}
*/
C++代码