任务:用整型二维数组模拟地图(1代表墙壁,0代表通路),给定起点坐标和终点坐标,用A*寻路算法查找最短路径
main.cpp代码如下:
#include <iostream>
#include <vector>
#define ROWS 12 //地图行数
#define COLS 12 //地图列数
#define SC 10 //直线代价
#define OC 14 //斜线代价
using namespace std;
//地图节点
struct Pos
{
int Row = 0; //所处行数
int Col = 0; //所处列数
int G = 0; //当前点到起点的代价
int H = 0; //当前点到终点的代价
int F = 0; //总代价
void SetF()
{
F = G + H;
}
};
//A*搜索树结构
struct TreeNode
{
Pos MyPos; //位置信息
TreeNode* pParent = nullptr; //父结点指针
TreeNode* pChild0 = nullptr; //孩子0结点指针
TreeNode* pChild1 = nullptr; //孩子1结点指针
TreeNode* pChild2 = nullptr; //孩子2结点指针
TreeNode* pChild3 = nullptr; //孩子3结点指针
TreeNode* pChild4 = nullptr; //孩子4结点指针
TreeNode* pChild5 = nullptr; //孩子5结点指针
TreeNode* pChild6 = nullptr; //孩子6结点指针
TreeNode* pChild7 = nullptr; //孩子7结点指针
};
//探索方向
enum Director
{
D_up, D_down, D_left, D_right, D_lup, D_ldown, D_rup, D_rdown
};
//辅助地图结点
struct Mark {
int val; //1表示墙壁,0表示通路
bool bIsFind; //是否已被探索,1表示已被探索,0表示未被探索
};
//创建新的树结点
Tr