题解 | #蛇形矩阵# 基于vector容器
蛇形矩阵
https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
#include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<vector<int>> arr(n,vector<int>(n,0)); int tmp = n,val = 1; int i=0,j=0; int num = 0; while(i >= 0){ arr[i][j] = val++; if(i > 0){ i -= 1; j += 1; }else if(i == 0){ if(j == n-1){ break; } i = j + 1; j = 0; } } tmp = n; i = 0; while(tmp > 0){ for(int k=0; k<tmp;k++){ cout << arr[i][k] << " "; } cout << endl; i++; tmp--; } return 0; } // 64 位输出请用 printf("%lld")
本题难点在于矩阵的构造,本思路采用的是在值递增的基础上更新位置的方式来构造矩阵。