蛇形填数

来源:互联网 发布:富士康java开发笔试题 编辑:程序博客网 时间:2024/05/22 00:32
#include <stdio.h>
#include <string.h>
#define maxn 10
int a[maxn][maxn];
int main()
{
 int n,m=0,x,y;
 scanf("%d",&n);
 memset(a,0,sizeof(a));
 m=a[x=0][y=n-1]=1;
 while(m<n*n)
 {
  while(x+1<n && !a[x+1][y]) a[++x][y]=++m;
  while(y-1>=0 && !a[x][y-1]) a[x][--y]=++m;
  while(x-1>=0 && !a[x-1][y]) a[--x][y]=++m;
  while(y+1<n && !a[x][y+1]) a[x][++y]=++m;
 }
 
 for(int i=0;i<n;i++)
 {
  for(int j=0;j<n;j++)
  {
   printf("%d ",a[i][j]);
  }
  printf("\n");
 }
 return 0;
 
 }