#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
// 创建一个N×N的矩阵,初始化为0
vector<vector<int>> magicSquare(N, vector<int>(N, 0));
// 将1放在第一行中间
int num = 1;
int i = 0, j = N / 2;
magicSquare[i][j] = num;
// 依次填写剩余的数字
for (num = 2; num <= N * N; ++num) {
// 计算下一个位置
int next_i = (i - 1 + N) % N;
int next_j = (j + 1) % N;
// 检查下一个位置是否已经填了数字
if (magicSquare[next_i][next_j] == 0) {
i = next_i;
j = next_j;
} else {
i = (i + 1) % N;
}
// 填写数字
magicSquare[i][j] = num;
}
// 输出幻方
for (i = 0; i < N; ++i) {
for (j = 0; j < N; ++j) {
cout << magicSquare[i][j] << " ";
}
cout << endl;
}
return 0;
}
#include
#include
using namespace std;
int main() {
int N;
cin >> N;
// 创建一个N×N的矩阵,初始化为0
vector<vector<int>> magicSquare(N, vector<int>(N, 0));
// 将1放在第一行中间
int num = 1;
int i = 0, j = N / 2;
magicSquare[i][j] = num;
// 依次填写剩余的数字
for (num = 2; num <= N * N; ++num) {
// 计算下一个位置
int next_i = (i - 1 + N) % N;
int next_j = (j + 1) % N;
// 检查下一个位置是否已经填了数字
if (magicSquare[next_i][next_j] == 0) {
i = next_i;
j = next_j;
} else {
i = (i + 1) % N;
}
// 填写数字
magicSquare[i][j] = num;
}
// 输出幻方
for (i = 0; i < N; ++i) {
for (j = 0; j < N; ++j) {
cout << magicSquare[i][j] << " ";
}
cout << endl;
}
return 0;
}