#include #include using namespace std; int main() { int N; cin >> N; // 输入方阵的边长N int a[N][N]; // 创建N×N的二维数组 int k = 1; // 用于填充方阵的计数器 int h = 0, l = 0; // 行和列的起始位置 int hy = 0; // 用于记录已经填充的行数 for (int i = 0; i < N; i++) { h = N - hy; // 当前行位置为N-hy l = 0; // 列位置从0开始 for (; l != N; l++) { // 填充当前行的元素 a[h][l] = k++; } l--; // 回到当前行的最后一个元素 for (; h != N; h++) { // 填充当前列的元素 a[h][l] = k++; } hy++; // 更新已填充的行数 } // 输出方阵 for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { cout << setw(4) << a[i][j]; // 设置宽度为4并输出元素 } cout << endl; // 每填满一行后换行 } return 0; }