AStar算法求解迷宫最短路径问题

本文介绍了如何应用AStar算法来解决一个7行7列的迷宫问题。虽然代码是为特定尺寸的迷宫编写的,但通过简单的调整可以适用于任意大小的迷宫。博主分享了相关代码,并欢迎读者提出建议和优化。
摘要由CSDN通过智能技术生成

 我这个仅针对7行7列的迷宫写的,写的比较急,要计算n行m列的迷宫稍微改下就行了

代码如下,若有不妥请高手指点:

#include <iostream>
#include <set>
#include <string>
#include <cmath>
#include <cstdlib>
#define N 100

using namespace std;

struct node
{
	double h,g,f;
	int x,y;	
	bool operator<(node other)const
	{
		return f<other.f;
	}
};
int map[N][N];//迷宫,1表示可以走,0表示不可以走
int row,col;//矩阵的行和列
multiset<node> open;//可以拓展节点
multiset<node>::iterator it;
node close[N][N];//已经走过的节点
int step[8][2] = {1,0,0,1,-1,0,0,-1,1,1,1,-1,-1,1,-1,-1};//走的方式
int prev[N*N];//存放前一个节点
void Init()
{
	memset(close,0,sizeof(close));
}

double getg(node a,node b)//获取当前点到终点的路径值
{
	return sqrt(1.0*(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));	
}
bool Is_Match(node a,node b)
{
	if(a.x == b.x && a.y == b.y)
	{
		return true;	
	}	
	return false;
}
node begin,end;
int
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值