1、题目描述
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
2、解题思路
将矩阵赋值分为四部分,向右、向下、向左、向上四个方向上的循环赋值
3、代码
#include<iostream>
using namespace std;
int main(){
int n;
cout<<"please input the n: ";
cin>>n;
int matrix[n][n];
int i=0,j=0,x=n,y=n,left=n*n,temp=1;
while(left--){
//toword rigt
for(int k=i;k<x;++k){
matrix[j][k]=temp;
++temp;
}
++j;
//toward down
for(int k=j;k<y;++k){
matrix[k][x-1]=temp;
++temp;
}
--x;
//toward left
for(int k=x-1;k>=i;--k){
matrix[y-1][k]=temp;
++temp;
}
--y;
//toward up
for(int k=y-1;k>=j;--k){
matrix[k][i]=temp;
++temp;
}
++i;
}
//output
for(int k1=0;k1<n;++k1){
for(int k2=0;k2<n;++k2){
cout<<matrix[k1][k2]<<"\t";
}
cout<<endl;
}
return 0;
}
4、结果图