/*
走迷宫
使用递归实现走迷宫
*/
#include <iostream>
using namespace std;
#define LEN 5
int start_pos_x = 0, start_pos_y = 0;
int Map_x = 4, Map_y = 4;
int Map[][5] =
{
{0,0,0,0,0},
{0,0,2,0,0},
{2,0,2,2,0},
{0,0,0,2,0},
{0,2,0,0,0}
};
void Funca(int s_x,int s_y)
{
Map[s_x][s_y] = 1;
if(s_x == LEN-1 && s_y == LEN-1){
/*当到达出口时 直接显示路径信息*/
for(int i=0;i<LEN;i++){
for(int j=0;j<LEN;j++){
cout<<Map[i][j]<< " ";
}
cout<<endl;
}
cout<<endl;
}
else{
/*前方满足条件的时候 按照顺时针方向探索 */
if(s_y < ( LEN - 1 ) && Map[s_x][s_y+1] == 0 ){
Funca(s_x,s_y+1);
}
if(s_x < ( LEN - 1 ) && Map[s_x+1][s_y] == 0 ){
Funca(s_x+1,s_y);
}
if(s_y > 0 && Map[s_x][s_y-1] == 0){
Funca(s_x,s_y-1);
}
if(s_x > 0 && Map[s_x-1][s_y] == 0){
Funca(s_x-1,s_y);
}
}
/*不满足条件时 向前回溯 返回上一位置*/
Map[s_x][s_y] = 0;
}
int main(void){
Funca(start_pos_x,start_pos_y);
system("pause");
return 0;
}