走迷宫

问题描述

给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 01,其中 0 表示可以走的路,1 表示不可通过的墙壁。

最初,有一个人位于左上角 (1,1) 处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。

请问,该人从左上角移动至右下角 (n,m) 处,至少需要移动多少次。

数据保证 (1,1) 处和 (n,m) 处的数字为 0,且一定至少存在一条通路。

输入格式
第一行包含两个整数 nm

接下来 n 行,每行包含 m 个整数(01),表示完整的二维数组迷宫。

输出格式
输出一个整数,表示从左上角移动至右下角的最少移动次数。

数据范围

1≤n,m≤100

输入样例:

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>
#include <queue>using namespace std;typedef pair<int, int> PII;int n, m;
const int N = 110;int g[N][N];
int d[N][N];int bfs()
{queue<PII> q;q.push({0, 0});memset(d, -1, sizeof d);d[0][0] = 0;while(!q.empty()){auto t = q.front();q.pop();int x = t.first, y = t.second;int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};for(int i = 0; i < 4; i++){int nx = x + dx[i], ny = y + dy[i];if(nx >= 0 && nx < n && ny >=0 && ny < m && g[nx][ny] == 0 && d[nx][ny] == -1){q.push({nx, ny});d[nx][ny] = d[x][y] + 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++){scanf("%d", &g[i][j]);}}cout << bfs() << endl;return 0;
}

算法基础课——走迷宫(BFS)相关推荐

  1. JAVA算法:走迷宫回溯算法设计(JAVA版本)

    JAVA算法:走迷宫回溯算法设计(JAVA版本) 迷宫数组 int[][] maze = {                 {0, 1, 0, 0, 0},                 {0, ...

  2. 【动态规划】机器人走迷宫-BFS

    机器人走迷宫-BFS 题目描述:给一个矩阵,0代表可走位置,1代表障碍物 给定起点和终点和行走规则(上.下.左.右),输出最短路径 探寻最短路径-BFS 首先定义两个辅助函数,valid_action ...

  3. 蓝桥杯 python 走迷宫 BFS

    蓝桥杯 python 走迷宫 BFS 题目描述 给定一个 N × × × M 的网格迷宫 G.GG的每个格子要么是道路,要么是障碍物(道路用 1 表示,障碍物用 0 表示). 已知迷宫的入口位置为 ( ...

  4. LRU算法,走迷宫,数根,星际战争

    问答题1 问答题1:一进程刚获得三个主存块的使用权,若该进程访问页面的次序是{1321215123},采用 LRU 算法,缺页数是几次? LRU 算法是先置换出不常用的页面,如果一个页面刚刚被访问过, ...

  5. DFS和BFS概念及实践+acwing 842 排列数字(dfs) +acwing 844. 走迷宫(bfs)

    DFS (深搜), 也有说就是递归的 执着: 一直搜到底,然后回溯下一个节点 数据结构 : stack (这里的栈,实际上是编译器内部的栈, 所以说也可以看成递归, 递归内部也是调用编译器内部栈) 空 ...

  6. 强化学习Q-leaning算法之走迷宫

    来自于莫凡大神的强化学习教程,今天学习了走迷宫的小例子.网站网址是:https://morvanzhou.github.io/tutorials/machine-learning/reinforcem ...

  7. Acwing---844. 走迷宫——BFS

    走迷宫 1.题目 2.基本思想 3.代码实现 1.题目 给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示 可以走的路,1 表示不可通过的墙壁.最初,有一个人 ...

  8. 【路径规划】基于A星算法机器人走迷宫路径规划matlab代码

    1 简介 基本的迷宫搜索算法被称为无信息规划算法是一种盲从状态下的搜索算法.所谓的无信息规划,指的是除了起点和终点之间的点以外的中间节点都是可扩展节点,且它们成为系统后续搜索节点的概率是相同的.无信息 ...

  9. c语言老鼠迷宫程序,C语言经典算法——老鼠走迷宫(二)

    说明 ​由于迷宫的设计,老鼠走迷宫的入口至出口路径可能不只一条,如何求出所有的路径呢? ​解法 ​求所有路径看起来复杂但其实更简单,只要在老鼠走至出口时显示经过的路径,然后退回上一格重新选择下一个位置 ...

最新文章

  1. 把毛选和鲁迅全集喂给AI后,写出来的高考作文太对味了
  2. valid floating point value什么意思_每个位置的球员,都在干些什么
  3. python eval()函数使用
  4. C++调用matlab编程
  5. RHEL 5.4下cyrus-sasl-2.1.22 的编译安装
  6. echarts源码:图标类插件开发
  7. 动态滤波网络论文解读
  8. spring5源码-事务
  9. vscode jupyter补全_Cern ROOT 在jupyter里的使用
  10. 图像识别实战——天气分类
  11. 最新的easymule版本,使用vs2005编译
  12. 一张图了解CAS单点登录的流程
  13. win10子系统ubuntu WSL下无法用git下载代码
  14. badboy无法录制 浏览器版本过低请下载最新的Badboy
  15. 毕业了~(2008-06-04 11:22)
  16. png在ai转为路径_png格式转为ai格式
  17. 政府应用系统应用解决方案
  18. 专访京东孙海波:大牛架构师养成记及电商供应链中区块链技术的应用(转)...
  19. 全球顶级黑客对决AI GeekPwn2017黑客大赛看点曝光
  20. 购物车——js小项目实例

热门文章

  1. 【Python游戏】坦克大战、推箱子小游戏怎么玩?学会这些让你秒变高高手—那些童年的游戏还记得吗?(附Pygame合集源码)
  2. SPSS学习笔记——最优尺度分析(多重对应分析)
  3. 软件测试面试技巧——情景回答
  4. 开发者账号无法登录iTunes connect但是 能登录develop apple网站
  5. 趣任务——安利一个企业管理神器
  6. 很有深意的《白雪公主杀人事件》
  7. 怎么把图片文字转换成word文档?这个方法了解一下
  8. 微信小程序“摇一摇”实现
  9. 人工智能 :眼纹识别技术大显神通,一眼认出你
  10. android 背景图遮罩,通过css使用background-color为背景图添加遮罩效果