D2-走迷宫

题目描述

在这里插入图片描述

思路分析

维护一个队列,每次从队列中取出一个元素,然后从这个元素的四个方向进行遍历、判断是否出界和这个位置是否能走,使用bfs遍历一遍后得出的值就是最短路径

代码如下

#include<bits/stdc++.h>
using namespace std;
const int N=100;
int n,m,g[N][N],d[N][N];//d数组维护从{0,0}到{x,y}的距离
int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};
typedef pair<int,int> p;
int bfs()
{
  queue<p>  q;
  //首先将d数组重置
  memset(d,-1,sizeof d);
  //先将第一个元素入队
  q.push({0,0});
  d[0][0]=0;
  while(q.size())
  {
  //取出队首元素
    p t=q.front();
    q.pop();
    for(int i=0;i<4;i++)
    {
    //遍历队首元素的四个方向的值
      int x=t.first+dx[i],y=t.second+dy[i];
      if(x>=0&&x<n&&y>=0&&y<m&&g[x][y]==0&&d[x][y]==-1)
      {
        q.push({x,y});
        d[x][y] = d[t.first][t.second] + 1;
      }
    }
  }
  return d[n-1][m-1];
}
int main(){
  cin>>n>>m;
  for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
      cin>>g[i][j];
  int res = bfs();
  cout<<res<<endl;
  return 0;

}

相关推荐

  1. CCF-迷宫(bfs)

    2024-04-15 06:08:03       57 阅读
  2. Acwing 844 迷宫

    2024-04-15 06:08:03       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-15 06:08:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-15 06:08:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-15 06:08:03       87 阅读
  4. Python语言-面向对象

    2024-04-15 06:08:03       96 阅读

热门阅读

  1. 深入理解SOAP协议:基于XML的分布式通信协议

    2024-04-15 06:08:03       42 阅读
  2. 深度学习开源标注工具

    2024-04-15 06:08:03       39 阅读
  3. 目标检测与图像分类的区别(概念)

    2024-04-15 06:08:03       40 阅读
  4. 单调栈和单调队列所学的一些问题

    2024-04-15 06:08:03       43 阅读
  5. 长短期记忆网络 – Long short-term memory | LSTM

    2024-04-15 06:08:03       36 阅读