Run ID:2245

提交时间:2023-12-23 00:29:48

#include <iostream> #include <vector> void generateMatrix(int N) { std::vector<std::vector<int> > matrix(N, std::vector<int>(N, 0)); int num = 1; int row = 0, col = 0; int layer; if (N % 2 == 0) { layer = N / 2; } else { layer = (N + 1) / 2; } for (int i = 0; i < layer; ++i) { for (col = i; col < N - i; ++col) { matrix[i][col] = num++; } for (row = i + 1; row < N - i; ++row) { matrix[row][N - i - 1] = num++; } for (col = N - i - 2; col >= i; --col) { matrix[N - i - 1][col] = num++; } for (row = N - i - 2; row > i; --row) { matrix[row][i] = num++; } } for (int i = 0; i < N; ++i) { for (int j = 0; j < N; ++j) { std::cout << matrix[i][j]; if (j < N - 1) { std::cout << " "; } } if (i < N - 1) { std::cout << std::endl; } } } int main() { int N; std::cin >> N; generateMatrix(N); return 0; }