蛇形数字宫格的实现js
蛇形数字宫格的实现(JavaScript)
蛇形数字宫格是一种按特定顺序填充数字的矩阵,其填充路径呈蛇形蜿蜒。以下是一种实现方法:

初始化矩阵
创建一个二维数组作为矩阵,并初始化所有元素为0:

function createMatrix(rows, cols) {
return Array(rows).fill().map(() => Array(cols).fill(0));
}
填充数字的算法
使用方向控制和边界判断来实现蛇形填充:
function snakeFill(matrix) {
let rows = matrix.length;
let cols = matrix[0].length;
let num = 1;
let left = 0, right = cols - 1;
let top = 0, bottom = rows - 1;
let direction = 'right';
while (num <= rows * cols) {
if (direction === 'right') {
for (let i = left; i <= right; i++) {
matrix[top][i] = num++;
}
top++;
direction = 'down';
}
if (direction === 'down') {
for (let i = top; i <= bottom; i++) {
matrix[i][right] = num++;
}
right--;
direction = 'left';
}
if (direction === 'left') {
for (let i = right; i >= left; i--) {
matrix[bottom][i] = num++;
}
bottom--;
direction = 'up';
}
if (direction === 'up') {
for (let i = bottom; i >= top; i--) {
matrix[i][left] = num++;
}
left++;
direction = 'right';
}
}
return matrix;
}
示例用法
const matrix = createMatrix(4, 5);
const snakeMatrix = snakeFill(matrix);
console.log(snakeMatrix);
输出示例
对于4x5矩阵,输出将类似:
[
[1, 2, 3, 4, 5],
[10, 9, 8, 7, 6],
[11, 12, 13, 14, 15],
[20, 19, 18, 17, 16]
]
优化建议
- 可以添加参数校验确保行列数为正整数
- 对于超大矩阵可考虑性能优化
- 支持自定义起始数字和步长
这种方法通过控制方向变量和边界条件,实现了典型的蛇形填充算法。代码清晰展示了数字填充的路径变化逻辑。





