螺旋矩阵的几种打印形式
原创LQC_SUSER 发布于2018-08-06 21:39:43 阅读数 958 收藏
展开
#include<stdio.h>
int a[10][10];
void SpiralMatrix1(int N)//从左上角开始顺时针旋转
{
int i,j,tp=1;
for(i=0;i<N/2;i++)//最外层控制圈数
{
for(j=i;j<N-1-i;j++)
if(a[i][j]==0)
a[i][j]=tp++;
for(j=i;j<N-1-i;j++)
if(a[j][N-1-i]==0)
a[j][N-1-i]=tp++;
for(j=N-1-i;j>i;j--)
if(a[N-1-i][j]==0)
a[N-1-i][j]=tp++;
for(j=N-1-i;j>i;j--)
if(a[j][i]==0)
a[j][i]=tp++;
}
if(N%2==1)
a[N/2][N/2]=tp;
}
void SpiralMatrix2(int N)//从右上角开始顺时针旋转
{
int i,j,tp=1;
for(i=0;i<N/2;i++)
{
for(j=i;j<N-1-i;j++)
if(a[j][N-1-i]==0)
a[j][N-1-i]=tp++;
for(j=N-1-i;j>i;j--)
if(a[N-1-i][j]==0)
a[N-1-i][j]=tp++;
for(j=N-1-i;j>i;j--)
if(a[j][i]==0)
a[j][i]=tp++;
for(j=i;j<N-1-i;j++)
if(a[i][j]==0)
a[i][j]=tp++;
}
if(N%2==1)
a[N/2][N/2]=tp;
}
void SpiralMatrix3(int N)//从左上角开始逆时针旋转
{
int i,j,tp=1;
for(i=0;i<N/2;i++)
{
for(j=i;j<N-1-i;j++)
if(a[j][i]==0)
a[j][i]=tp++;
for(j=i;j<N-1-i;j++)
if(a[N-1-i][j]==0)
a[N-1-i][j]=tp++;
for(j=N-1-i;j>i;j--)
if(a[j][N-1-i]==0)
a[j][N-1-i]=tp++;
for(j=N-1-i;j>i;j--)
if(a[i][j]==0)
a[i][j]=tp++;
}
if(N%2==1)
a[N/2][N/2]=tp;
}
void main()
{
int i,j,N;
printf("请输入N:");
scanf("%d",&N);
SpiralMatrix1(N);
printf("从左上角开始顺时针旋转:
");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%-4d",a[i][j]);
printf("
");
}
for(i=0;i<N;i++)
for(j=0;j<N;j++)
a[i][j]=0;
SpiralMatrix2(N);
printf("从右上角开始顺时针旋转:
");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%-4d",a[i][j]);
printf("
");
}
for(i=0;i<N;i++)
for(j=0;j<N;j++)
a[i][j]=0;
SpiralMatrix3(N);
printf("从左上角开始逆时针旋转:
");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%-4d",a[i][j]);
printf("
");
}
}
————————————————
版权声明:本文为CSDN博主「LQC_SUSER」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34875598/article/details/81461889