【题目描述】

定义一个二维数组:

int maze[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,

};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。

【输入】

一个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

【输出样例】

(0, 0)
(1, 0)
(2, 0)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(3, 4)
(4, 4)

【源程序】

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 26
#define MOD 2520
#define E 1e-12
using namespace std;
int n=5;
char a[N][N];
bool vis[N][N];
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
struct node
{int x;int y;
}q[N*100],res[N][N];
void print(int x,int y)
{if(x==-1&&y==-1)return;print(res[x][y].x,res[x][y].y);printf("(%d, %d)\n",x,y);
}
void bfs(int sx,int sy,int ex,int ey)
{int head=1,tail=1;memset(vis,0,sizeof(vis));vis[sx][sy]=1;res[sx][sy].x=-1;res[sx][sy].y=-1;q[tail].x=sx;q[tail].y=sy;tail++;while(head<tail){int x=q[head].x;int y=q[head].y;if(x==ex&&y==ey){print(x,y);break;}for(int i=0;i<4;i++){int nx=x+dir[i][0];int ny=y+dir[i][1];if(nx>=0&&nx<n&&ny>=0&&ny<n&&vis[nx][ny]==0&&a[nx][ny]==0){vis[nx][ny]=1;q[tail].x=nx;q[tail].y=ny;tail++;res[nx][ny].x=x;res[nx][ny].y=y;}}head++;}
}
int main()
{for(int i=0;i<n;i++)for(int j=0;j<n;j++)scanf("%d",&a[i][j]);bfs(0,0,n-1,n-1);return 0;
}

迷宫问题(信息学奥赛一本通-T1255)相关推荐

  1. 走迷宫(信息学奥赛一本通-T1252)

    [题目描述] 一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走:有的格子是空地,可以走. 给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到).只能在水平方向或垂直方向走,不 ...

  2. 走出迷宫(信息学奥赛一本通-T1254)

    [题目描述] 当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单. 假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路. [输 ...

  3. 迷宫(信息学奥赛一本通-T1215)

    [题目描述] 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行.同时当Extense处在某 ...

  4. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  5. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  6. 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例

    题目链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 题目描述: 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动 ...

  7. [信息学奥赛一本通][POJ 2251]地牢大师

    来源:<信息学奥赛一本通> , POJ 2251 算法标签 BFS 题目描述 你现在被困在一个三维地牢中,需要找到最快脱离的出路! 地牢由若干个单位立方体组成,其中部分不含岩石障碍可以直接 ...

  8. 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”

    董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...

  9. 信息学奥赛一本通 提高篇 第5章 矩阵乘法

    例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...

最新文章

  1. QString与std::string的相互转换
  2. C# 子窗口修改主窗口的控件
  3. python控制modem的at指令_硬件设计MCU架构+Python命名空间和作用域
  4. Shell中I/O重定向的用法笔记
  5. [html] 说说你对target=“_blank“的理解?有啥安全性问题?如何防范?
  6. 最近发包给朋友,搞定软件小活儿、解决小功能模块的感受
  7. Python多处理示例
  8. 苹果cmsv10精仿好看的挖片网免费自适应简约模板
  9. mesa3d源代码阅读笔记
  10. RYYB图像格式学习
  11. Office 2019怎么下载?附学习视频教程
  12. 浅谈程序员常去的社区
  13. 别出心裁的Linux系统调用学习法
  14. 京东2019春招编程题
  15. 以简洁且简单的方式安装Kali虚拟机(VirtualBox),以及安装后的简单配置
  16. 超外差ASK\RF433m、RF315m射频遥控模块解码教程,无线遥控器、电动窗帘遥控、RF遥控器电平信号、协议分析
  17. 集成elastic-job分布式调度定时任务
  18. Java多态的理解和应用
  19. Gateway 上网本 无线上网驱动 (无线网卡型号 Atheros AR5007EG Wireless Network Adapter)
  20. PMarca的创业指导

热门文章

  1. 机器学习重大挑战:坏数据和坏算法正在毁掉你的项目
  2. Simulink之门极关断晶闸管(GTO)
  3. 微信昵称可以加特效啦!
  4. 不得不说,其实你的性能优化手段已经过时了
  5. 9名程序员被抓!这次我并不同情他们!
  6. 程序员造轮子的正确姿势
  7. JEECG 版本更新日志
  8. 微信小程序的出现会给前端开发带来什么
  9. 站在面试官角度,看求职与内卷
  10. 架构设计 | 异步处理流程,多种实现模式详解