蛇形填数又称为螺旋矩阵,题意很简单不再描述,直接运行代码即可。
代码如下:
#include<stdio.h>
#include<string.h>
#define max 10
int a[max][max];
int main()
{
int n,x,y,t=0;
printf("请输入一个不大于10的数\n");
scanf("%d",&n);
memset(a,0,sizeof(a));
x=0; y=n-1; //表示从右上角开始写
t=a[x][y]=1;
while(t<n*n)
{//while判断是否越界,并判断是否已经赋过值
while(x+1<n && !a[x+1][y]) a[++x][y]=++t; //从右上角至右下角
while(y-1>=0 && !a[x][y-1]) a[x][--y]=++t; //从右下角到左下角
while(x-1>=0 && !a[x-1][y]) a[--x][y]=++t; //从左下角到左上角
while(y+1<n && !a[x][y+1]) a[x][++y]=++t; //从左上角到右上角
}
for(x=0;x<n;x++)
{
for(y=0;y<n;y++)
printf("%3d",a[x][y]);
printf("\n");
}
return 0;
}
题目思路来源: 《算法竞赛入门经典》 作者:刘汝佳