今天在VS2012上试着写了一个螺旋矩阵的生成算法,效果还不错。
int n=1,i=0,j=0,k=1; cin>>n; int ** arr=new int*[n]; for(int l=0;l<n;l++) { arr[l]=new int[n]; } int count=n/2; for(i=0;i<count;i++) { int m=n-1-i; for(j=i; j<=m; j++) arr[i][j]=k++; for(j=i+1; j<=m; j++) arr[j][m]=k++; for(j=m-1; j>=i; j--) arr[m][j]=k++; for(j=m-1; j>i; j--) arr[j][i]=k++; } if(n%2==1) arr[count][count]=n*n; for(i=0;i<n;i++) { for(j=0;j<n;j++) { cout<<arr[i][j]<<' '; } cout<<endl; }