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小时内删除。