#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
constexpr int N = 1e3 + 10, inf = 0x3f3f3f3f;
int a[N][N];
int dir[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
int n, m;
int cnt = 1;
int pos = 0;
void dfs(int x, int y)
{
a[x][y] = cnt++;
int tx = x + dir[pos][0], ty = y + dir[pos][1];
if (tx <= n && ty <= m && tx >= 1 && ty >= 1 && a[tx][ty] == 0)
{
dfs(tx, ty);
}
else
{
pos++;
pos %= 4;
tx = x + dir[pos][0], ty = y + dir[pos][1];
if (a[tx][ty] != 0)
{
return;
}
dfs(tx, ty);
}
}
void solve()
{
cin >> n >> m;
dfs(1, 1);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
cout << a[i][j] << ' ';
}
cout << endl;
}
}
signed main()
{
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int T = 1;
while (T--)
{
solve();
}
return 0;
}
蛇形矩阵—DFS
最新推荐文章于 2024-08-16 22:50:33 发布