#include <iostream>
using namespace std;
int a[99][99];
int d[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//此处用于实现控制矩阵方向的转换
int n;
void treat();
int outside(int ,int);
int main()
{
while(cin>>n)//设置矩阵宽度为n
{
int i,j,k=0,f=0;
if(f=0)f++;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=0;
i=0;j=0;
for(int t=1;t<n*n;t++)
{
a[i][j]=t;//给矩阵相应位置赋值
if(outside(i+d[k][0],j+d[k][1]))//移动并赋值,构造螺旋矩阵
k=(k+1)%4;//转换方向
i+=d[k][0];j+=d[k][1];
}
a[i][j]=n*n;
for(i=0;i<n;i++)//输出
{
for(j=0;j<n-1;j++)
cout<<a[i][j]<<" ";
cout<<a[i][n-1]<<endl;
}
}
return 0;
}
int outside(int x,int y)//用于判断矩阵构成是否符合规范
{
if((x<0)||(y<0)||(x>=n)||(y>=n))return 1;
if(a[x][y]>0) return 1;
return 0;
}
简单的螺旋矩阵的实现
最新推荐文章于 2024-08-10 23:54:05 发布