迷宫寻路 (25分)

给定一个M行N列的迷宫图,其中 "0"表示可通路,"1"表示障碍物,无法通行。在迷宫中只允许在水平或上下四个方向的通路上行走,走过的位置不能重复走。

5行8列的迷宫如下:

0 1 1 1 0 0 0 0
0 0 0 1 0 0 0 0
0 1 0 0 0 1 0 0
0 1 1 1 0 1 1 0
1 0 0 0 0 0 0 0
则从左上角(1,1)至右下角(5,8)的最短路径为:

1,1–》2,1–》2,2–》2,3–》3,3–》3,4–》3,5–》4,5–》5,5–》5,6–》5,7–》5,8

题目保证每个迷宫最多只有一条最短路径。

请输出该条最短路径,如果不存在任何通路,则输出"NO FOUND".

输入格式:
第一行,输入M和N值,表示迷宫行数和列数。

接着输入M行数值,其中,0表示通路,1表示障碍物。每列数值用空格符间隔。

接下来可能输入多组迷宫数据。

当输入M的值为-1时结束输入。

输出格式:
按行顺序输出路径的每个位置的行数和列数,如 x,y

如果不存在任何路径,则输出"NO FOUND".

每组迷宫寻路结果用换行符间隔。

输入样例:
在这里给出一组迷宫。例如:

8 8
0 0 1 0 0 0 1 0
0 0 1 0 0 0 1 0
0 0 0 0 1 1 0 0
0 1 1 1 0 0 0 0
0 0 0 1 0 0 0 0
0 1 0 0 0 1 0 0
0 1 1 1 0 1 1 0
1 0 0 0 0 0 0 0
4 4
0 0 1 0
0 0 0 0
0 0 1 1
0 1 0 0
-1 -1
输出样例:
在这里给出相应的输出。例如:

1,1
2,1
3,1
4,1
5,1
5,2
5,3
6,3
6,4
6,5
7,5
8,5
8,6
8,7
8,8

NO FOUND

思路:用BFS,加一个记录路径的数组(模板要记好)

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;int n,m;
int a[maxn][maxn];
int v[maxn][maxn];
int dx[4]= {0,1,0,-1};
int dy[4]= {1,0,-1,0};typedef struct Point {int x;int y;
} POINT;queue<POINT> r;
POINT p[maxn][maxn];void fre(){while(!r.empty()){r.pop();}
} void print(POINT c){if(c.x == 1&&c.y == 1){cout << "1" << "," << "1" << endl;return;}print(p[c.x][c.y]);cout << c.x << "," << c.y << endl;}int main(void) {for(int i = 0 ; ;i++){fre();memset(v,0,sizeof(v));memset(a,0,sizeof(a));memset(p,0,sizeof(p));int f = 0;cin >> m >> n;if(m == -1) {break;}for(int i = 1; i<=m; i++) {for(int j = 1; j<=n; j++) {cin >> a[i][j];}}POINT start;start.x = 1;start.y = 1;r.push(start);v[1][1] = 1;while(!r.empty()) {int x = r.front().x;int y = r.front().y;if(x == m && y == n) {f = 1;break;}for(int k = 0; k <= 3; k++) {int tx = x + dx[k];int ty = y + dy[k];if(tx<1||tx>m||ty<1||ty>n) {continue;}if(a[tx][ty]==0&&v[tx][ty]==0) {POINT temp;temp.x = tx;temp.y = ty;r.push(temp);v[tx][ty] = 1;p[tx][ty].x = x;p[tx][ty].y = y;}}r.pop();}if(f == 0) {cout << "NO FOUND";}else{POINT ed;ed.x = m;ed.y =n;print(ed);       }cout << "\n";
}return 0;
}

迷宫寻路 (25分)相关推荐

  1. 数据结构应用实例#栈#迷宫寻路

    使用数据结构 栈(Stack)来实现一种低级的迷宫寻路的功能. 低级是因为无法判断路径是不是最短的. 这里使用的栈结构如图 (这图我选择死亡...) 注意结构体里DataType的实际含义,是另外一个 ...

  2. 迷宫寻路系列常用算法逻辑探究

    前言: 又到了人才流动的高峰季节,"金三银四",过了这个村,就没那个店,面试者勤奋地准备题典,面试官也在奋笔疾书, 有些面试官喜欢广度的知识覆盖,而有些面试官喜欢深度的知识探求. ...

  3. 7-121 深入虎穴 (25 分)(dfs,bfs)

    7-121 深入虎穴 (25 分) 著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报.已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门.每一扇门背后或者是一 ...

  4. java动画迷宫寻路_[人工智能] 迷宫生成、寻路及可视化动画

    前言 数据结构准备 迷宫生成算法 迷宫寻路算法 前言 本次带来迷宫相关的算法,迷宫的算法涉及到不少经典的图论算法,在游戏中NPC这些算法被大量的运用,深入了解和学习这些算法是为开发游戏打下坚实的基础. ...

  5. 【CCCC】L2-031 深入虎穴 (25分),,求多叉树最深的节点编号,大水题!!!

    problem L2-031 深入虎穴 (25分) 著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报.已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门.每一 ...

  6. 【强化学习】Q-Learning算法求解迷宫寻路问题 + Java代码实现

    文章目录 前言 一.Q-Learning算法简介 1.1 更新公式 1.2 预测策略 1.3 详细资料 二.迷宫寻路问题简介 三.Java代码 3.1 环境说明 3.2 参数配置 3.3 迷宫环境类 ...

  7. L2-031 深入虎穴(24分与25分的dfs)

    传送门 24分WA: #include <bits/stdc++.h> #define closeSync ios::sync_with_stdio(0);cin.tie(0);cout. ...

  8. 题目:L2-031 深入虎穴 (25 分)

    题目:题目详情 - L2-031 深入虎穴 (25 分) (pintia.cn) 大意 已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门.每一扇门背后或者是一个房间,或 ...

  9. 天梯赛L2-3 深入虎穴 (25 分)

    PTA L2-3 深入虎穴 (25 分) 著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报.已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门.每一扇门背后或 ...

最新文章

  1. Linux Kernel TCP/IP Stack — L2 Layer — switchdev L2 Offload
  2. 【错误记录】编译 Android 版本的 ijkplayer 报错 ( You must define ANDROID_NDK before starting. | 下载指定版本 NDK )
  3. python从命令行获取参数_python从命令行获取参数操作
  4. 攻防世界dice_game(pwn)
  5. Python基础概念_13_常见关键字
  6. 内存墙,多核CPU的终结者?
  7. fastapi 传输文件存文件_揭秘|国内影视文件传输的真相,跨境文件传输更不简单...
  8. exif linux php扩展_LNMP环境为PHP添加exif扩展
  9. java证书不通过,java-证书不会偶尔发送
  10. Abp vnext Web应用程序开发教程 10 —— 书与作者的关系
  11. mysql外键 菜鸟教程_MySQL 菜鸟入门“秘籍”
  12. 小米路由器安装Linux软件,小米路由器mini安装mixbox教程
  13. JavaScript练习题
  14. 人智导(二):启发式搜索
  15. 零基础自学计算机方法大全
  16. OC 调用 Swift 方法
  17. 爱情婚姻 - 苏格拉底
  18. 23是android版本几,关于sdk=23的android版本权限的问题
  19. 在OpenCV里绘制直线、圆、中文等图形
  20. 多重条件结构(知识就是力量!)

热门文章

  1. u盘启动盘制作工具如何设置BIOS来使用的方法
  2. MVC简介(MVC是什么)
  3. 中国各大银行简称——搞笑版
  4. 输入年龄显示今年多少岁
  5. 粗糙集的上、下近似与定积分之间的关系
  6. 2021年安全员-A证考试技巧及安全员-A证操作证考试
  7. 文科女生与IT(一)
  8. JavaScript 快速入门教程
  9. 场景数据互为表里!畅想2027,保险行业发展愿景
  10. Android:butterKnife(黄油刀的简单使用