最基本的算法,0表示路,1表示墙,2表示终点,8表示路径,这个算法会把所有情况都表示出来,并且不会重复在原地转圈
**
效果如下
**
**
代码与注释如下
**
#include<iostream>
using namespace std;
int a[4][4];
void dfs(int p,int q){
if(a[p][q] == 1)return ;//判断条件与防止原地打圈
if(a[p][q] == 8)return ;
if(a[p][q] == 2){
for(int i=0; i<4 ;i++){
for(int j=0; j<4;j++){
cout << a[i][j] << " ";//符合条件就立即遍历输出
}
cout << endl;
}
cout << endl;
return ;
}
a[p][q] = 8;
if(q<3)dfs(p,q+1);
if(p<3)dfs(p+1,q);
if(q>0)dfs(p,q-1);
if(p>0)dfs(p-1,q); //把四个可能的方向一一递归
a[p][q] = 0;
return ;
}
int main(){
for(int i=0; i<4 ;i++){
for(int j=0; j<4;j++){
cin >> a[i][j];
}
}//输入迷宫样式
cout << endl;
dfs(0,0);
}