#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cmath>
#define N 1000
#define inf 1<<30;
using namespace std;
/*
a星算法,找寻最短路径
算法核心:有两个表open表和close表
将方块添加到open列表中,该列表有最小的和值。且将这个方块称为S吧。
将S从open列表移除,然后添加S到closed列表中。
对于与S相邻的每一块可通行的方块T:
如果T在closed列表中:不管它。
如果T不在open列表中:添加它然后计算出它的和值。
如果T已经在open列表中:当我们使用当前生成的路径到达那里时,检查F(指的是和值)是否更小。如果是,更新它的和值和它的前继。
F = G + H (G指的是从起点到当前点的距离,而H指的是从当前点到目的点的距离(移动量估算值采用曼哈顿距离方法估算)
*/
int map[6][7]; //0表示是路,1表示有阻碍物
int xstart, ystart, xend, yend; //(x1,y1)起点,(x2, y2)目的点
int close[6][7]; //0表示不在,1表示在
int n;
void astar(int , int );
bool check(int x, int y);
int panyical(int x, int y);
void print2();
struct point{
int x, y;
int f, g, h;
int prex, prey; //上一个点的x,y
point(int x0, int y0, i
A星算法,找寻最短路径
最新推荐文章于 2024-08-13 12:00:43 发布
本文深入探讨了A星算法的工作原理,展示了如何利用该算法有效地寻找图形中的最短路径。通过实例分析,解释了A星算法的关键步骤,包括启发式函数的选择、优先队列的使用以及节点的扩展策略。此外,还讨论了A星算法在游戏开发、路径规划等领域的重要应用。
摘要由CSDN通过智能技术生成