【算法】设计一个递归算法以生成螺旋矩阵并输出一个螺旋矩阵(C++源码)
原创
©著作权归作者所有:来自51CTO博客作者敲代码两年半的练习生的原创作品,请联系作者获取转载授权,否则将追究法律责任
【算法】设计一个递归算法以生成螺旋矩阵并输出一个螺旋矩阵(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;
}