大家好!今天讲地图问题(深搜)
//地图
//输出时走过的标一,没走过标零
#include<iostream>
using namespace std;
int a[1000][1000],b[1000][1000],n;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
void print(){
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++){
cout<<b[i][j];
}
cout<<endl;
}
cout<<endl;
return;
}
void dfs(int x,int y){//深搜函数
int tx,ty;
if (x==n&&y==n){
print();
return;
}
for (int i=0;i<4;i++){
tx=x+dx[i];
ty=y+dy[i];
if (tx<1||tx>n||ty<1||ty>n){
continue;
}
if (a[tx][ty]==0&&b[tx][ty]==0){
b[tx][ty]=1;
dfs(tx,ty);
b[tx][ty]=0;
}
}
}
int main(){
cin>>n;
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++) cin>>a[i][j];
}
a[1][1]=1;
b[1][1]=1;
dfs(1,1);
return 0;
}