本蒟蒻的代码
样例通过但测试点全WA
#include<bits/stdc++.h>
using namespace std;
int n;
char mp[35][35];
int vis[35][35];
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void dfs(int x,int y){
if(x==n && y==n) return ;
for(int i=0;i<4;i++){
int fx=x+dx[i];
int fy=y+dy[i];
if(fx > 0 && fx < n+1 && fy > 0 && fy < n+1 && mp[fx][fy]!='1' && !vis[fx][fy]){
vis[fx][fy]=1;
dfs(fx,fy);
}
}
}
int main(){
cin >> n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin >> mp[i][j];
}
}
vis[1][1]=1;
dfs(1,1);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(vis[i][j]==1) cout << '0' << " ";
else if(mp[i][j]=='1') cout << '1' << " ";
else cout << '2' << " ";
}
cout << endl;
}
return 0;
}