维护行指针 r 和列指针 c,移动两个指针构造整个矩阵。
蛇形矩阵满足条件:
- 第一个格子始终是1;
- 当
r为0时,下一位r为当前c + 1; 下一位c为0; - 如果
r和c不满足条件2,那么下一位r为 当前r - 1,下一位c为 当前c + 1;
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
for (; cin >> n;) {
vector<vector<int>> grid;
for (int r = 0; r < n; r++) {
vector<int> row(n - r, 0);
grid.push_back(row);
}
for (int r = 0, c = 0, t = 0; r < n && c < grid[r].size();)
{
grid[r][c] = t + 1;
t = grid[r][c];
if (!r) {
r = c + 1;
c = 0;
}
else {
r--;
c++;
}
}
for (int r = 0; r < n; r++) {
for (int c = 0; c < grid[r].size(); c++) {
cout << grid[r][c] << ' ';
}
cout << endl;
}
}
return 0;
} 
京公网安备 11010502036488号