#include <stdio.h>
int main() {
int a[1000][1000], n, i, j, b = 1, k;
scanf("%d", &n); // 输入矩阵的大小
// 填充矩阵
for (i = 0; i < 2 * n - 1; i++) { // 遍历每条对角线
j = i < n ? 0 : i - n + 1; // 起始行
k = i < n ? i : n - 1; // 起始列
// 根据 i 的奇偶性决定填充方向
while (j < n && k >= 0) {
if (i % 2 == 0) {
a[k][j] = b++; // 按从下到上填充
} else {
a[j][k] = b++; // 按从上到下填充
}
j++;
k--;
}
}
// 输出矩阵
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}



京公网安备 11010502036488号