Javascript 最小步数
我试图返回在二维地图上从一个点移动到另一个点时所需的最小步数 0 – cell is empty, 1 – cell is blocked, 5 – from point (A), 6 – to point (B). 0–单元格为空, 1–单元被阻塞, 5–从(A)点开始, 6–指向第(B)点。Javascript 最小步数,javascript,jquery,Javascript,Jquery,我试图返回在二维地图上从一个点移动到另一个点时所需的最小步数 0 – cell is empty, 1 – cell is blocked, 5 – from point (A), 6 – to point (B). 0–单元格为空, 1–单元被阻塞, 5–从(A)点开始, 6–指向第(B)点。 有人能帮忙解决这个问题吗?这里有一种技术,它是宽度优先搜索的一种实现,这是一种在未加权图中寻找最短距离的标准算法 您将需要一个队列(先进先出的数据结构),我们可以使用一个数组和一个数据结构来实现该
有人能帮忙解决这个问题吗?这里有一种技术,它是宽度优先搜索的一种实现,这是一种在未加权图中寻找最短距离的标准算法 您将需要一个队列(先进先出的数据结构),我们可以使用一个数组和一个数据结构来实现该队列,以跟踪我们访问的节点及其父节点(即我们到达的节点)。我们可以用一张物体的地图 从启动节点开始,并将其添加到队列中。然后,当队列不为空时:
- 将节点移出队列
- 找到它的邻居
- 如果邻居不在父映射中,则将其添加到队列和邻居映射中
- 重复,直到找到目的地
//做一个稍微难一点的迷宫
var multiArr=[
['0','0','0','0','1','5','0'],
['1','0','1','0','0','1','0'],
['0','0','0','1','0','1','0'],
['1','1','0','1','0','1','0'],
['0','0','0','1','0','1','0'],
['6','1','0','1','0','0','0']
];
/*我们开始的坐标,为简单起见硬编码*/
设coord=[0,5]
/*找到给定坐标的邻域
仅返回不等于1和的值
不要离开地图的边缘*/
函数GetNeights(arr、coord){
让高度=arr.长度;
let width=arr[0]。长度;
返回[[1,0]、-1,0]、[0,1]、[0,1]。减少((a,c)=>{
设n=c.map((d,ind)=>d+coord[ind])
如果(n[0]>=0&&n[0]=0&&n[1] bfs(coord,multiArr)
到目前为止您尝试了什么?我认为您可以用一个图来近似它,然后应用Dijkstraalgorithm@CristianTraìna我首先创建了两个循环,一个用于x,一个用于y,并在if语句中开始检查路径。从那以后我不知道该怎么做proceed@CristianTraìna Dijkstra用于具有加权边的图。没有理由在这里使用它。简单的广度优先搜索就可以了。@Mark_M是的,你是对的,使用Dijkstra在计算复杂度方面没有改进,但是矩阵可以很容易地转换成一个每个链接都有1
作为权重的图,然后只使用已经存在的算法。Mark_M谢谢你的详细解释!最后,我需要解释一下如何解决这个问题,这样我就可以在这个问题上做更详细的研究和实践了!