js 坐标最短路径算法
在 JavaScript 中,可以使用广度优先搜索(BFS)算法来寻两个坐标之间的最短路径。
首先,我们需要定义一个表示图的数据结构。可以使用一个二维数组来表示地图,其中每个格子可以是障碍物或可通行的区域。例如,0 表示可通行的区域,1 表示障碍物。
接下来,我们使用 BFS 算法来搜索最短路径。首先,我们需要定义一个队列来保存待处理的节点。在开始时,将起始坐标添加到队列中。
然后,我们可以开始搜索循环。在每个循环中,取出队列的第一个节点,并检查其上下左右四个相邻节点是否可通行且未被访问过。如果是,则将该节点添加到队列中,并将其距离加1。
重复上述步骤,直到队列为空或者到目标坐标。如果到目标坐标,可以根据节点的距离回溯路径,直到到达起始坐标。
下面是一个示例代码:
javascript
function shortestPath(grid, start, end) {
const queue = [start];
const visited = new Set();
visited.String());
const distances = {[String()]: 0};
const dx = [-1, 0, 1, 0];
const dy = [0, 1, 0, -1];
while (queue.length > 0) {
const current = queue.shift();
const [x, y] = current.split(',').map(Number);
for (let i = 0; i < 4; i++) {
const newX = x + dx[i];
const newY = y + dy[i];
const neighbor = `{newX},{newY}`;
if (
newX >= 0 &&
newX < grid.length &&
newY >= 0 &&
newY < grid[0].length &&
grid[newX][newY] === 0 &&
!visited.has(neighbor)
) {
queue.push(neighbor);
visited.add(neighbor);
distances[neighbor] = distances[current] + 1;
if (neighbor === String()) {
Found the target!
return distances[neighbor];
js 二维数组 }
}
}
}
No path found
return -1;
}
Example usage
const grid = [
[0, 0, 0, 0, 0],
[0, 1, 1, 1, 0],
[0, 0, 0, 0, 0],
[1, 1, 1, 1, 0],
[0, 0, 0, 0, 0],
];
const start = [0, 0];
const end = [4, 4];
console.log(shortestPath(grid, start, end)); Output: 8
在上面的示例中,我们使用一个 5x5 的地图表示。起始坐标为 `[0, 0]`,目标坐标为 `[4, 4]`。其中,`0` 表示可通行的区域,`1` 表示障碍物。运行结果为 `8`,表示起始坐标到目标坐标的最短路径长度为 `8`。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论