100
#LS1019. 【入门】蛇形方阵

【入门】蛇形方阵

题目描述

nnn*n 方阵里填入 1,2,3,...,n21,2,3,...,n^2要求填成蛇形。例如,当 n=4n=4 时方阵如图所示:

1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

输入格式

一行一个正整数 n(1n100)n(1 \le n \le 100)

输出格式

nnn*n 的蛇形方阵,两数之间用一空格隔开。

4
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

提示

  • 二维数组的应用
  • 假设初始坐标是左上角的 (x, y) = (0, 0)
  • 设二维数组
// {0, 1} 表示 (x = x + 0, y = y + 1),  往右走
// {1, 0} 表示 (x = x + 1, y = y + 0),  往下走
// {0, -1} 表示 (x = x + 0, y = y - 1), 往左走
// {-1, 0} 表示 (x = x -1, y = y + 0),  往上走
int d[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
  • 最开始 (x, y) 按照 {0, 1} 走
  • 走到方阵外或者走到已经走过的格子,就换成 {1, 0}
  • 继续走到方阵外或者走到已经走过的格子,就换成 {0, -1}
  • 继续走到方阵外或者走到已经走过的格子,就换成 {-1, 0}
  • 继续走到方阵外或者走到已经走过的格子,就换回 {0, 1}
  • 重复上述过程直到写完所有数

数据规模与限制

  • 1n102,104ai1041 \le n \le 10^2, -10^4 \le a_i \le 10^4
  • 300ms, 1024KiB for each test case.