题解 | #蛇形矩阵#
蛇形矩阵
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奇数对角线(从右上到左下)