以A*算法作为本程序的算法,利用f=g+h;其中g代表每个结点的深度,h代表该结点与目标结点相差的位置。利用open,close表作为辅助。把每个同一层次的结点放进open表中,再选取最小代价放入close表中。close表中的结点即为最优路径中的一个结点。直到找出目标的结点,然后打印。 ① 判断OPEN表是否为空的函数 ② 求OPEN表中估价函数值最小的结点的函数 ③ 判断初始状态是否可到达目标状态的函数 ④ 求估价函数值p(n)-曼哈顿距离 ⑤ 产生新状态的函数,共四个,空格上/下/左/右
const int CAN_MOVE_ID = 0; const int G_OFFSET = 1; struct node{//接点 int f;//该节点路径评分,一般为g+h int g;//从起始点到该节点的预估距离 int h;//从该节点到终点的曼哈顿距离(忽略障碍水平垂直移动到终点的距离) int row;////该节点所在行 int col;//该节点所在列 node *parent;//该节点的父节点 }; // struct _node{ // node s;//当前接点