分析:简单的BFS
# include <stdio.h>
struct node
{
int x,y,pre;
}q[30];
int map[10][10];
void Print(int i)
{
if(q[i].pre!=-1)
Print(q[i].pre);
printf("(%d, %d)\n",q[i].x,q[i].y);
}
void Bfs(int x0,int y0)
{
int i,a,b,front=0,rear=0;
int dx[4]={1,-1,0,0},dy[4]={0,0,-1,1};
q[rear].x=x0;
q[rear].y=y0;
q[rear++].pre=-1;
while(front<rear)
{
for(i=0;i<4;i++)
{
a=q[front].x+dx[i];
b=q[front].y+dy[i];
if(a<0||a>=5||b<0||b>=5||map[a][b])
continue;
map[a][b]=1;
q[rear].x=a;
q[rear].y=b;
q[rear++].pre=front;
if(a==4&&b==4)
{
Print(rear-1);
return;
}
}
front++;
}
}
int main()
{
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&map[i][j]);
Bfs(0,0);
return 0;
}

本文介绍了一个使用广度优先搜索(BFS)算法解决迷宫问题的C语言实现。通过定义结构体节点来记录坐标及前驱节点,实现了从起点到终点的最短路径寻找。该算法适用于5x5大小的地图,并能够输出从起点到终点的具体路径。
370

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



