BFS(广度优先搜索)这里用来两种方法存储路径,1.同map大小的数组来存储路径2.通过生成反向树状结构存储路径

本文通过C++代码介绍了使用BFS(广度优先搜索)算法寻找路径的方法,包括利用同map大小的数组存储路径和通过构建反向树状结构存储路径。详细展示了如何遍历二维矩阵,避免重复访问,并找到从起点到终点的路径。
摘要由CSDN通过智能技术生成

1.数组存储路径,代码如下:

的#include <iostream的>

#include <queue>
#include <cstdlib>
using namespace std;
结构点//点的结构体
{
point(int x,int y):x(x),y​​(y){} //带参构造
点(){}; //无参构造
point&operator =(point&a)//重载=
{
x = ax;
y = ay;
返回*这个;
}
点运算符+(point&a)//重载+
{
点t
tx = x + ax;
ty = y + ay;
返回t
}
bool operator ==(point&a)//重载==
{
return(x == ax)&&(y == ay);
}
int x;
int y
};
int main()
{
无符号索引= 0;
int arr [] [10] = {1,1,0,1,1,1,1,1,1,1,
                   1,0,0,0,0,0,0,0,1,1,
                      1,1,1,0,0,0,0,0,0,0,
                   1,1,0,0,0,1,1,0,0,0,
                   1,1,1,1,0,1,1,1,1,0,
                   1,1,1,1,0,1,0,0,0,0,
                   1,1,1,1,0,1,0,1,1,1,
                   1,1,1,1,0,1,0,1,1,1,
                   1,1,1,1,0,0,0,1,1,1,
                   1,1,1,1,1,1,1,1,1};
bool isfind [10] [10];
memset(isfind,false,sizeof(bool)* 100);
点开始(0,2);
点终点(8,4);
点树[10] [10];
memset(tree,0,sizeof(point)* 100);
点det [4] = { {0,1},{1,0},{0,-1},{-1,0}};
我的
点电流;
if(!(Begin == End))
{
My.push(开始);
isfind [Begin.x] [Begin.y] = true;
而(真)
{
if(!My.empty())
{
Current = My.front();
My.pop();
}
其他
{
cout <<“查找失败”<< endl;
打破;
}
for(unsigned i &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值