蛇形填充n阶方阵
问题描述
小U面临一个有趣的任务:在一个 n×n 的方阵中填入 1 到 n×n 这些数字,并要求按照蛇形顺序从右上角开始,沿着方阵的边界顺时针进行填充。蛇形填充的特殊排列方式使得每一层数字呈现出波浪形的排列方式。
例如,当 n=4 时,方阵应如下所示:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
你需要编写程序输出填充后的方阵,确保格式的整齐性。
测试样例
样例1:
输入:
n = 4
输出:[[10, 11, 12, 1], [9, 16, 13, 2], [8, 15, 14, 3], [7, 6, 5, 4]]
样例2:
输入:
n = 5
输出:[[13, 14, 15, 16, 1], [12, 23, 24, 17, 2], [11, 22, 25, 18, 3], [10, 21, 20, 19, 4], [9, 8, 7, 6, 5]]
样例3:
输入:
n = 3
输出:[[7, 8, 1], [6, 9, 2], [5, 4, 3]]
思路
-
方向数组:
- 定义方向数组
dx和dy,分别表示在x轴和y轴上的方向变化。
- 定义方向数组
-
方向:
direction变量用于跟踪当前的方向(0代表向右,1代表向下,2代表向左,3代表向上)。- 方向的变化通过
(direction + 1) % 4来实现,确保方向在0到3之间循环。
-
填充矩阵:
- 在每次迭代中,将当前位置
(x, y)填充为num,并将num增加1。 - 计算下一个位置
(nx, ny)。如果下一步超出了边界则改变方向。
- 在每次迭代中,将当前位置