题解 | #蛇形矩阵#
蛇形矩阵
https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
蛇形矩阵之比较笨拙的方法:
观察蛇形矩阵发现,对角边的元素分别为{1}, {2,3}, {4,5,6}, ……且第n行的元素为数组的倒数第n个元素。
思路:对于N行蛇形矩阵,构造N个数组,分别为{1}, {2,3}, {4,5,6}, ……,然后输出每个数组的倒数第n个元素(n=1,2,……,N)
注意第n个数组只出现在前n行
#include<iostream>
#include<vector>
using namespace std;
int main() {
int N;
cin >> N;//N行的蛇形矩阵
vector<vector<int>> v;//v存储所有的数组
vector<int> v1;//暂存数组
int i, j, k = 1;
//构建N个数组,分别为{1},{2,3},{4,5,6},...
for (i = 0; i < N; ++i) {
for (j = 0; j <= i; ++j) {
v1.push_back(k++);
}
v.push_back(v1);
}
//蛇形矩阵第n行是每一个数组的倒数第n个元素,v[j].size()-1是倒数第一个元素
for (i = 0; i < N; ++i) {
for (j = i; j < N; ++j) {
cout << v[j][v[j].size() - i - 1] << " ";
}
cout << endl;
}
return 0;
}

查看10道真题和解析