poj3984-迷宫问题(BFS)

这是一个使用宽度优先搜索(BFS)算法解决POJ3984题目的C语言实现。程序通过二维数组表示迷宫,并通过BFS找到从起点到终点的路径。当找到终点时,程序将输出从终点到起点的路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# include<stdio.h>
# include<stdlib.h>
int map[5][5];
int dir[4][2]={1,0,-1,0,0,1,0,-1};
struct node
{
    int x,y;
};struct node queue[33],record[5][5];
void bfs()
 {       int head,tail,i;
         struct node cur,next;
         head=tail=0;
         tail++;
         while(head<tail)
            {
                 cur=queue[head++];
                 for(i=0;i<4;i++)
            {    next.x=cur.x+dir[i][0];
                 next.y=cur.y+dir[i][1];
                 if(next.x>=0&&next.y>=0&&next.x<5&&next.y<5&&map[next.x][next.y]==0)
                {
                 record[next.x][next.y].x=cur.x;
                 record[next.x][next.y].y=cur.y;
                if(next.x==4&&next.y==4)
                          return ;
                  else
                    {
                   map[next.x][next.y]=1;
                   queue[tail++]=next;
                    }
                 }
                }
                }
}
int main()
{       int i,j,k,m,n;
        struct node cur;
        for(i=0;i<5;i++)
        for(j=0;j<5;j++)
        scanf("%d",&map[i][j]);
        cur.x=0;
        cur.y=0;
        map[0][0]=1;
        queue[0]=cur;
        bfs();
        k=0;
        queue[k].x=4;
        queue[k++].y=4;
        i=j=4;
        while(i!=0||j!=0)
          {   m=i;n=j;
              i=record[m][n].x;
              j=record[m][n].y;
              queue[k].x=i;
              queue[k++].y=j;
           }
        for(i=k-1;i>=0;i--)
            printf("(%d, %d)\n",queue[i].x,queue[i].y);
      return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值