题解 | #蛇形矩阵#
蛇形矩阵
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; }