题解 | #蛇形矩阵# 基于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")
本题难点在于矩阵的构造,本思路采用的是在值递增的基础上更新位置的方式来构造矩阵。


