Run ID:103594

提交时间:2024-12-29 14:07:03

#include <iostream> #include <vector> using namespace std; // 方阵的行数和列数 int n; // 打印方阵的函数 void printMatrix(vector<vector<int>>& matrix) { for (auto& row : matrix) { for (auto& num : row) { cout.width(2); // 设置输出宽度为2,保证数字对齐 cout << num; } cout << endl; } } // 主函数 int main() { cin >> n; // 输入N vector<vector<int>> matrix(n, vector<int>(n)); // 创建N*N的方阵 int num = 1; // 初始化数字为1 int i = 0, j = n - 1; // 初始化起始位置 // 填充方阵 while (num <= n * n) { for (int k = j; k >= 0; k--) { // 从右向左填充 matrix[i][k] = num++; } for (int k = i + 1; k < n; k++) { // 从上向下填充 matrix[k][j] = num++; } if (i > 0 && j < n - 1) { // 如果不是在第一行或最后一列 for (int k = j - 1; k >= 0; k--) { // 从左向右填充 matrix[n - 1 - k][j] = num++; } for (int k = n - 2 - i; k >= 0; k--) { // 从下向上填充 matrix[i][k] = num++; } } i++; // 移动到下一行 j--; // 移动到上一行 } // 打印方阵 printMatrix(matrix); return 0; }