-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path传染修改.js
34 lines (33 loc) · 864 Bytes
/
传染修改.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var matrix = [
[1, 2, 3, 4, 5],
[5, 4, 3, 2, 1],
[2, 3, 3, 2, 1],
[2, 3, 2, 3, 3]
]
function Z (x, y, s, t) {
const dirArr = [[0, 1], [1, 0], [0, -1], [-1, 0]] // 方向
const setArr = new Set([`${x},${y}`]) // 去重数组,标识已经访问过的坐标
const queue = []
queue.push([x, y])
while(queue.length) {
const [x, y] = queue.shift()
for(let i = 0; i < 4; i++) {
cx = x + dirArr[i][0]
cy = y + dirArr[i][1]
if (cx < 0 || cy < 0 || cx >= 4 || cy >= 4 || matrix[cx][cy] !== 3 || setArr.has(`${cx},${cy}`)) {
continue
}
matrix[cx][cy] = 2
setArr.add(`${cx},${cy}`)
queue.push([cx, cy])
}
}
return matrix
}
console.log(Z(2,2,3,2))
/* 输出以下
1 2 2 4 5
5 4 2 2 1
2 2 2 2 1
2 2 2 3 3
*/