问题描述:
给定一个整数n,按照螺旋顺序生成一个由1到n 2的元素组成的方阵。
例如,给定n = 3,
应该返回以下矩阵:
[
[1,2,3],
[8,9,4],
[7,6,5]
]
#include <vector>
#include <iostream>
using namespace std;
vector<vector<int> > generateMatrix(int n){
vector<vector<int>> matrix(n,vector<int>(n));//创建二维矩阵
int count=1;
int rowstart=0,rowend=n-1,colstart=0,colend=n-1;
while(count<=n*n){
for(int j=colstart;j<=colend;j++){
matrix[rowstart][j]=count++;
}
rowstart++;
for(int i=rowstart;i<=rowend;i++){
matrix[i][colend]=count++;
}
colend--;
for(int j=colend;j>=colstart;j--){
matrix[rowend][j]=count++;
}
rowend--;
for(int i=rowend;i>=rowstart;i--){
matrix[i][colstart]=count++;
}
colstart++;
}
return matrix;
}
int main()
{
int n;
cin>>n;
vector<vector<int>> result=generateMatrix(n);
cout<<"["<<endl;
for(int i=0;i<n-1;i++){
cout<<"[";
for(int j=0;j<n-1;j++){
cout<<result[i][j]<<",";
}
cout<<result[i][n-1]<<"],";
cout<<endl;
}
cout<<"[";
for(int j=0;j<n-1;j++){
cout<<result[n-1][j]<<",";}
cout<<result[n-1][n-1]<<"]"<<endl;
cout<<"]"<<endl;
}