首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Java版A星算法兑现步骤

2012-07-02 
Java版A星算法实现步骤A星算法步骤:1.起点先添加到开启列表中。2.开启列表中有节点的话,取出第一个节点,即

Java版A星算法实现步骤

A星算法步骤:1.起点先添加到开启列表中。2.开启列表中有节点的话,取出第一个节点,即最小F值的节点,判断此节点是否是目标点,是则找到了,跳出,根据此节点取得八个方向的节点,求出G,H,F值,判断每个节点在地图中是否能通过,不能通过则加入关闭列表中,跳出判断每个节点是否在关闭列表中,在则跳出,判断每个节点是否在开启列表中,在则更新G值,F值,还更新其父节点;不在则将其添加到开启列表中,计算G值,H值,F值,添加其节点。3.把此节点从开启列表中删除,再添加到关闭列表中。4.把开启列表中按照F值最小的节点进行排序,最小的F值在第一个。5.重复2,3,4步骤,直到目标点在开启列表中,即找到了;目标点不在开启列表中,开启列表为空,即没找到

?

public class Test {          public static void main(String[] args){        int[][] map=new int[][]{// 地图数组                {1,1,1,1,1,1,1,1,1,1},                {1,1,1,1,0,1,1,1,1,1},                {1,1,1,1,0,1,1,1,1,1},                {1,1,1,1,0,1,1,1,1,1},                {1,1,1,1,0,1,1,1,1,1},                {1,1,1,1,0,1,1,1,1,1}          };          AStar aStar=new AStar(map, 6, 10);          int flag=aStar.search(4, 0, 3, 8);          if(flag==-1){              System.out.println("传输数据有误!");          }else if(flag==0){              System.out.println("没找到!");          }else{              for(int x=0;x<6;x++){                  for(int y=0;y<10;y++){                    if(map[x][y]==1){                        System.out.print(" ");                    }else if(map[x][y]==0){                        System.out.print("〓");                    }else if(map[x][y]==-1){                        System.out.print("※");                      }                  }                  System.out.println();              }          }      }} 
??

热点排行