RE,输出乱七八糟一大堆,有没有大佬帮忙看一下有什么问题
代码写的非常烂,请别喷,谢谢
#include <bits/stdc++.h>
using namespace std;
int a[1010][1010], b[1010][1010];
int d[10][10] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
int n;
bool f = 1;
#define check(x, y) (x <= n && x >= 1 && y <= n && y >= 1)
void dfs(int x, int y, int k){
a[x][y] = k;
b[x][y] = 1;
if (x == 1 || x == n || y == 1 || y == n){
f = 0;
return ;
}
for (int i = 0; i < 4; i++){
int nx = x + d[i][0];
int ny = y + d[i][1];
if (check(nx, ny) && b[nx][ny] == 0 && a[nx][ny] == 3){
dfs(nx, ny, k);
}
}
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++){
for (int j = 1; j <= n; j++){
cin >> a[i][j];
if (a[i][j] == 0) a[i][j] = 3;
}
}
for (int i = 1; i <= n; i++){
for (int j = 1; j <= n; j++){
if (a[i][j] == 3){
dfs(i, j, 0);
for (int x = 1; x <= n; x++){
for (int y = 1; y <= n; y++){
b[x][y] = 0;
}
}
if (f == 1){
dfs(i, j, 2);
break;
}
else f = 0;
}
}
if (f == 1) break;
}
for (int i = 1; i <= n; i++){
for (int j = 1; j <= n; i++){
cout << a[i][j] << "\n";
}
cout << endl;
}
return 0;
}