自己写的一个螺旋矩阵的算法,感觉好笨,呵呵,还没想出好办法来,感觉肯定有个很简洁的算法来实现。
#include<stdio.h>
#include<stdlib.h>
void SpiralMatrix(int start,int n)
{
int sm[n][n],i,j;
i=j=0;
memset(sm,0,sizeof(sm));
int m = n -1 ;
for(i=0;i<(n+1)/2;i++)
{
for(j=i;j<=m;j++)
{
sm[i][j]=start;
start++;
}
for(j=i+1;j<=m;j++)
{
sm[j][m]=start;
start++;
}
for(j=m-1;j>=i;j--)
{
sm[m][j]=start;
start++;
}
for(j=m-1;j>i;j--)
{
sm[j][i]=start;
start++;
}
m--;
}
/**
* print matrix
*/
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%3d ",sm[i][j]);
}
putchar('\n');
}
}
int main()
{
int n = 0;
while(1)
{
printf("Enter the number,0 to quit: ");
scanf("%d",&n);
if(n<=0)
break;
else
SpiralMatrix(1,n);
}
system("pause");
return 0;
}
2万+

被折叠的 条评论
为什么被折叠?



