我可以向左、向右、向上、向下移动--不允许有对角线移动。
只能移动到包含1而不是0的单元格。
从左上角单元格开始(0,0)
结束于右下角单元格(2,3)
最后一个单元格未定义,应为(2,3)。
let visited = [[false, false, false, false],
[false, false, false, false],
[false, false, false, false]]
function shortestPath(arr, c, r) {
if (arr.length === c + 1 && arr[0].length === r + 1) {
if (arr[c][r] === 1) {
return true;
}
else { return false }
}
if (c === arr.length || r === arr[0].length || c < 0 || r < 0) { return }
console.log(r, c)
if (arr[c][r] === 0) { return }
if (visited[c][r]) { return }
visited[c][r] = true
shortestPath(arr, c, r + 1)
shortestPath(arr, c + 1, r)
shortestPath(arr, c, r - 1)
shortestPath(arr, c - 1, r)
}
let a = [[1, 1, 1, 0],
[1, 1, 0, 1],
[1, 1, 1, 1]]
console.log(shortestPath(a, 0, 0))
字符串
输出量:
0 0
1 0
2 0
3 0
2 1
1 0
1 1
2 1
1 2
2 2
1 2
2 1
0 2
1 2
0 1
1 1
0 2
0 0
1 1
0 1
1 0
0 0
0 1
未定义
1条答案
按热度按时间t1qtbnec1#
标签:https://jsfiddle.net/vanowm/j0dxqy7h/