您的位置:首页 > 其它

构造螺旋矩阵

2014-03-03 19:51 309 查看
// 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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: