当前位置: 首页 > news >正文

走迷宫(BFS)

image

输入样例:

5 5
0 1 0 0 0
0 1 0 1 0
0 0 0 0 0
0 1 1 1 0
0 0 0 1 0 

期望输出:

8

代码实现:

 

#include<bits/stdc++.h>
using namespace std;typedef pair<int,int> pii;
const int N = 110;int n ,m;
int s[N][N];//用存放地图
int d[N][N];//用于存放每个点到起点的距离
pii q[N*N];//定义一个队列,手动模拟int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};int bfs()
{int h=0,t=0;//队头和队尾q[0]={0,0};memset(d,-1,sizeof(d));//把所有点距离置为-1表示没有走过。d[0][0]=0;//起点自身的距离是0while(h<=t)//队列非空{auto k = q[h++];//取出队头//尝试往上下左右四个方向扩展for(int i=0;i<4;i++){int x = k.first + dx[i];int y = k.second + dy[i];//判断 点是否在范围内 并且 可以走 并且 没走过if(x>=0 && x<n && y>=0 && y<m &&s[x][y]==0 &&d[x][y]==-1){d[x][y]=d[k.first][k.second]+1;q[++t] = {x,y};}}}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>>s[i][j];}}cout<<bfs()<<endl;}
http://www.hskmm.com/?act=detail&tid=15058

相关文章:

  • MyBatis分页的原理和分页插件的原理是什么
  • 达成度报告
  • 旋转图像-leetcode
  • 【ChipIntelli 系列】ASR部分——合成语言模型和多网络(多语种)切换
  • 内网环境怎么安装软件(用 yum / apt 下载离线包并搬入内网)
  • tanh函数
  • P13617 [ICPC 2024 APC] Bit Counting Sequence
  • 打一局吗(60pts 解法)
  • 软工9.23
  • 本地部署qwen-0.6b
  • 25分钟小练习
  • 第七章 手写数字识别V2
  • 常用软件下载
  • 实用指南:S 4.1深度学习--自然语言处理NLP--理论
  • PyTorch图神经网络(五)
  • java
  • Jordan块新解
  • [CSP-S 2024] 染色
  • Kerberos 安装和使用
  • 第一次个人编程任务
  • 概率期望总结
  • redis实现秒杀下单的业务逻辑
  • 关于边缘网络+数据库(1)边缘网络数据库模式及选型
  • 题解:B4357 [GESP202506 二级] 幂和数
  • 2025年9月23日 - 20243867孙堃2405
  • 2025.9.23
  • 软件工程学习日志2025.9.23
  • markdown 使用指南
  • 第6.2节 Android Agent制作<三>