蛇(Python)型填数

参考答案:

#include <cstdio>
#include <cstring>
#include<stdlib.h>
int main()
{
  int n;
  int a[101][101];
  int sum;   //计数
  int i, j;
  scanf_s("%d", &n);
    sum = 0;
  int x = 0, y = n - 1;   // 代表 行列
  memset(a, 0, sizeof(a)); //将数组清零
  a[x][y] = ++sum;  //填入第一个数 :1
  while (sum < n * n)
    {
      while (x + 1 < n && !a[x + 1][y])    // !a[x + 1][y] 代表这个区域未有数填入,区域依然为0
      {
        a[++x][y] = ++sum;
      }
      while (y - 1 >= 0 && !a[x][y - 1])
      {
        a[x][--y] = ++sum;
      }
      while (x - 1 >= 0 && !a[x - 1][y])
      {
        a[--x][y] = ++sum;
      }
      while (y + 1 < n && !a[x][y + 1])
      {
        a[x][++y] = ++sum;
      }
    }
  for (i = 0; i < n; i++)
    {
      for (j = 0; j < n; j++)
      {
        printf("%5d", a[i][j]);
      }
      printf("\n");
    }


  //system("pause");
  return 0;
}

 

发表评论

邮箱地址不会被公开。 必填项已用*标注

15 − 11 =