根据打印方式来存储,需要注意的是参数设置
#include "stdafx.h"
#include<iostream>
#include<vector>
using namespace std;
int main(){
int n;
while(cin>>n){
int count=0;
int i=0;
int j=0;
int hangmo=n;
int liemo=n;
int hangchu=0;
int liechu=0;
vector<vector<int>>a(n,vector<int>(n,0));
while(count<(n*n)){
for(;j<liemo;j++){//蛇形矩阵未扫描的最上边一行 □
count++;
a[i][j]=count;
}
liemo--;i++;j--;
if(hangmo==hangchu && liemo==liechu){//蛇形矩阵未扫描的最右边一列
break;
}
for(;i<hangmo;i++){//蛇形矩阵未扫描的最下边一行
count++;
a[i][j]=count;
}
hangmo--;j--;i--;
if(hangmo==hangchu && liemo==liechu){//蛇形矩阵为扫描的最左边一列
break;
}
for(;j>=liechu;j--){
count++;
a[i][j]=count;
}
hangchu++;i--;j++;
if(hangmo==hangchu && liemo==liechu){
break;
}
for(;i>=hangchu;i--){
count++;
a[i][j]=count;
}
j++;i++;liechu++;
if(hangmo==hangchu && liemo==liechu){
break;
}
}
for(int k=0;k<n;k++){
for(int t=0;t<n;t++){
cout<<a[k][t]<<" ";
}
cout<<endl;
}
}
return 0;
}