题目信息
解题思路
按照题面上的方法直接模拟。
代码实现
#include <bits/stdc++.h>
using namespace std;
int a[40][40];
int n;
int main() {
cin >> n;
int x = 1, y = n / 2 + 1;
for (int i = 1; i <= n * n; ++i) {
a[x][y] = i;
if (x == 1 && y != n) {
x = n;
++y;
} else if (x != 1 && y == n) {
--x;
y = 1;
} else if (x == 1 && y == n) {
++x;
} else if (x != 1 && y != n) {
if (!a[x - 1][y + 1]) {
--x;
++y;
} else {
++x;
}
}
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j) {
cout << a[i][j] << ' ';
}
cout << '\n';
}
return 0;
}