算法
使用两个数组来表示上下左右
代码
#include <iostream>
using namespace std;
const int N = 110;
int n, m;
int g[N][N];
int main() {
cin >> n >> m;
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
int x = 1, y = 1, d = 0;
for (int i = 1; i <= n * m; ++i) {
if ((x + dx[d] > n || y + dy[d] > m || y + dy[d] == 0) || (g[x + dx[d]][y + dy[d]])) {
d = (d + 1) % 4;
}
g[x][y] = i;
x += dx[d];
y += dy[d];
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
cout << g[i][j] << " ";
}
cout << endl;
}
return 0;
}