// SpiralMatrix.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; //动态创建二维数组 int ** dynamic2DimensionArray(int n,int m){ int ** arr; for(int i=0;i<n;i++) { arr=(int **)malloc(sizeof(int **)*n); } for(int i=0;i<n;i++) { arr[i]=(int *)malloc(sizeof(int *)*m); } return arr; } //创建螺旋矩阵 int ** createSpiralMatrix(int n){ int ** arr=dynamic2DimensionArray(n,n); //初始化二维数组 for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ arr[i][j]=0; } } int m=1; //构建螺旋矩阵 for(int i=0;i<n/2;i++) { int j=0; for(j=i;j<n-i;j++) { arr[i][j]=m++; } for(j=i+1;j<n-i;j++) { arr[j][n-i-1]=m++; } for(j=n-i-2;j>i;j--) { arr[n-i-1][j]=m++; } for(j=n-i-1;j>i;j--) { arr[j][i]=m++; } } if(n%2==1)arr[n/2][n/2]=m++; return arr; } int _tmain(int argc, _TCHAR* argv[]) { int ** arr=createSpiralMatrix(5); for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ cout<<setw(5)<<arr[i][j]<<" "; } cout<<"\n"; } return 0; }
原文:http://blog.csdn.net/xiangqiao123/article/details/20393615