【算法】设计一个递归算法以生成螺旋矩阵并输出一个螺旋矩阵(C++源码)

时间:2022-10-18 07:20:16


【算法】设计一个递归算法以生成螺旋矩阵并输出一个螺旋矩阵(C++源码)

一、设计大纲

请设计一个递归算法以生成螺旋矩阵并输出,一个螺旋矩阵;

二 、设计要求

1、递归算法;
2、螺旋矩阵;

三、设计思路

没有用递归做,用的是二维数组的指针方法的做的

四、源代码(C++)

#include<iostream>
#include<malloc.h>

using namespace std;

int main()
{
int **p=NULL;
int n,i,j,k=1,line,row;
cout<<"请输入矩阵的行数:";
cin>>n;
if((p=(int**)malloc(sizeof(int**)*n))==NULL)
{
cout<<"不能分配内存!"<<endl;
return 1;
}
for(i=0;i<n;i++)
{
if((p[i]=(int*)malloc(sizeof(int*)*n))==NULL)
{
cout<<"不能分配内存!"<<endl;
return 1;
}
}

for(i=0,j=0;k<=n*n;i++,j++)
{
for(row=j;row<n-j;row++)
{
p[i][row]=k++;
}
for(line=i+1;line<n-i;line++)
{
p[line][n-j-1]=k++;
}
for(row=n-j-2;row>=j;row--)
{
p[n-i-1][row]=k++;
}
for(line=n-i-2;line>i;line--)
{
p[line][j]=k++;
}
}
cout<<"输出螺旋矩阵:"<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<" "<<p[i][j]<<" ";
}
cout<<endl;
}
for(i=0;i<n;i++)//释放行指针
{
free(p[i]);
p[i]=NULL;
}
free(p);//释放指针
p=NULL;
return 0;
}