简单BFS 、
自己以前用了好多方法 发现还是多看别人的简洁 高效代码 为好、
用STL queque 实现
#include <iostream>
#include <queue>
using namespace std;
int d[100001],hash[100001]; //深度 和 是否被访问过
int main()
{
queue<int> p;
int n,m,tmp;
cin>>n>>m;
p.push(n); //向队列位加入元素
d[n]=0;
while(p.size()>0)
{
tmp=p.front(); //取的队列头元素
if(tmp==m) break;
p.pop(); //删除队列头元素
hash[tmp]=1;
if(tmp+1<=100000&&hash[tmp+1]==0)
{
p.push(tmp+1);
d[tmp+1]=d[tmp]+1;
hash[tmp+1]=1;
}
if(tmp-1>=0&&hash[tmp-1]==0)
{
p.push(tmp-1);
d[tmp-1]=d[tmp]+1;
hash[tmp-1]=1;
}
if(tmp*2<=100000&&hash[tmp*2]==0)
{
p.push(tmp*2);
d[tmp*2]=d[tmp]+1;
hash[tmp*2]=1;
}
}
cout<<d[tmp]<<endl;
}
本文介绍了一个简单的BFS(广度优先搜索)算法实现案例,使用C++语言与STL queue来寻找从起始节点到目标节点的最短路径。通过不断扩展距离当前节点最近且未被访问过的节点来完成搜索过程。

182

被折叠的 条评论
为什么被折叠?



