1.设置一个move值G和一个曼哈顿值H,和他两的和F
2.设置一个hashset用来存储已经判断过的点,和一个优先队列que=PriorityQueue
3.设置一个存储父元素的字典parent={},
4.寻路:
将star存入hashset中;
当que不为空的时候循环:
从que中取最小的值curr
当curr !=end时循环:
遍历curr的邻居:
如果邻居已经在hashset中,则返回
如果邻居没有在que中存过,则直接将其存入que,
如果邻居在que中存过,则判断此时他的G值与之前的大小,
如果此时的的G值比之前的大,则不操作;
如果此时的G值比之前的小,则更新他之前的值(存入优先队列),并把 他的父节点设置为他现在的前一个;
如果没有存过,则直接存入que;他的父节点设置为前一个节点
如果curr==end:
while curr !=star:
将curr的坐标存入数组arr
只要curr的父节点不为空:
curr = curr的父节点
将curr加入hashset中