题解 | #蛇形矩阵#
蛇形矩阵
https://www.nowcoder.com/practice/f228a074c5274619b26be544962375e1
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n;
cin >> n;
int a[n][n]; // 声明一个 n x n 的矩阵
int num = 1; // 从1开始填充矩阵
for (int sum = 0; sum <= 2 * (n - 1); ++sum) {
if (sum % 2 != 0) {
for (int i = 0; i < n; ++i) {
int j = sum - i;
if (j >= 0 && j < n) {
a[i][j] = num++;
}
}
} else {
for (int j = 0; j < n; ++j) {
int i = sum - j;
if (i >= 0 && i < n) {
a[i][j] = num++;
}
}
}
}
// 输出填充好的矩阵
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cout << a[i][j]<<" ";
}
cout << endl;
}
}
根据奇偶遍历对角线
sum % 2 == 0偶数对角线(从左下到右上)
sum % 2 != 0奇数对角线(从右上到左下)
查看15道真题和解析
