❤ • 17天前
#include <bits/stdc++.h>
using namespace std;
int n, a[45][45] = {0};
struct node {
int x = 0;
int y = 0;
} arr[16000];
int main() {
cin >> n;
a[1][n / 2 + 1] = 1;
arr[1].x = 1;
arr[1].y = n / 2 + 1;
int sum = n * n;
for (int i = 2; i <= sum; i++) {
int prev_x = arr[i - 1].x;
int prev_y = arr[i - 1].y;
if (prev_x == 1 && prev_y != n) {
a[n][prev_y + 1] = i;
arr[i].x = n;
arr[i].y = prev_y + 1;
}
else if (prev_y == n && prev_x != 1) {
a[prev_x - 1][1] = i;
arr[i].x = prev_x - 1;
arr[i].y = 1;
}
else if (prev_x == 1 && prev_y == n) {
a[2][n] = i;
arr[i].x = 2;
arr[i].y = n;
}
else {
if (a[prev_x - 1][prev_y + 1] == 0) {
a[prev_x - 1][prev_y + 1] = i;
arr[i].x = prev_x - 1;
arr[i].y = prev_y + 1;
} else {
a[prev_x + 1][prev_y] = i;
arr[i].x = prev_x + 1;
arr[i].y = prev_y;
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
评论:
请先登录,才能进行评论