// 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;
}