您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

A*算法总结

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中

                

                                

                                       

 


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进