Run ID:119009

提交时间:2025-05-11 18:29:13

#include <iostream> #include <vector> using namespace std; void fillMatrix(vector<vector<int>>& matrix, int n) { int num = n * n; int top = 0, bottom = n - 1, left = 0, right = n - 1; while (top <= bottom && left <= right) { // 填充最右列,从上到下 for (int i = top; i <= bottom; ++i) { matrix[i][right] = num--; } right--; // 填充最下行,从右到左 if (top <= bottom) { for (int i = right; i >= left; --i) { matrix[bottom][i] = num--; } bottom--; } // 填充最左列,从下到上 if (left <= right) { for (int i = bottom; i >= top; --i) { matrix[i][left] = num--; } left++; } // 填充最上行,从左到右 if (top <= bottom) { for (int i = left; i <= right; ++i) { matrix[top][i] = num--; } top++; } } } int main() { int n; cin >> n; vector<vector<int>> matrix(n, vector<int>(n, 0)); fillMatrix(matrix, n); for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { cout << matrix[i][j]; if (j < n - 1) cout << " "; } cout << endl; } return 0; }