关于广度优先搜索

迷宫问题:在一个迷宫中找出从入口到出口的一条步数最少的通路。看好题目是(最少的通路)!!!... 迷宫问题:在一个迷宫中找出从入口到出口的一条步数最少的通路。看好题目是(最少的通路)!!! 展开
 我来答
匿名用户
2013-09-18
展开全部
恩,这个就是搜索树,进行广度优先遍历呀,也就是BFS算法,它可以保证结果是最优的,呵呵~~而深度优先搜索DFS是不能保证的哦……BFS算法也很好写的,用队列来维护即可~~下面给你一个参考题目和我的程序吧: http://poj.org/problem?id=3984 #include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;const int dx[4]={-1,0,1,0};
const int dy[4]={0,1,0,-1};
int maze[5][5],prev[5][5];
int que[32];
int qn;void print(int x,int y)
{
if(prev[x][y]!=-2)
{
print(prev[x][y]>>3,prev[x][y]&7);
}
printf("(%d, %d)\n",x,y);
}int main()
{
int i,j,cx,cy,nx,ny;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
scanf("%d",&maze[i][j]);
}
}
memset(prev,-1,sizeof(prev));
prev[0][0]=-2;
que[0]=0;
qn=1;
for(i=0;i<qn;i++)
{
cx=que[i]>>3;
cy=que[i]&7;
for(j=0;j<4;j++)
{
nx=cx+dx[j];
ny=cy+dy[j];
if((nx>=0)&&(nx<5)&&(ny>=0)&&(ny<5)&&(maze[nx][ny]==0)&&(prev[nx][ny]==-1))
{
prev[nx][ny]=(cx<<3)|cy;
que[qn++]=(nx<<3)|ny;
if((nx==4)&&(ny==4))
{
print(nx,ny);
return 0;
}
}
}
}
return 0;
}
传播易
2024-10-18 广告
搜索引擎推广是一种有效的网络营销策略,它利用搜索引擎的排名机制,将企业的网站或产品推到搜索结果的前列,从而提高曝光率和点击率。通过搜索引擎推广,企业可以将目标客户群体引导到自己的网站,促进产品销售和品牌知名度提升。在制定搜索引擎推广计划时,... 点击进入详情页
本回答由传播易提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式