★实验任务

有一只小仓鼠身处在一个 N*M 迷宫之中,它现在想知道它最快能什么时候到达出口。

迷宫是由 ‘ . ’ ‘ # ’ 构成,’ . ’表示可以通行,‘#’表示墙壁,不能通行,现在小仓鼠在‘S’的位置上,问到出口’E’的最短时间是多少?

★数据输入

第一行两个整数 n,m(1<n,m<=1000)表示 n 行,m 列

接下来输入一个 n*m 的迷宫(只包含 ’ . ’ , ’ # ’, ’ S ’,’ E ’)

★数据输出

如果能到达则输出最短时间,否则输出-1

输入示例1
3 4
....
S.#.
.#.E
输出示例1
6
输入示例2
3 5
..#..
#S#.E
...#.
输出示例2
-1

经典迷宫问题

#include<bits/stdc++.h>
using namespace std;
int flag[1005][1005];
int ans = -1;
int n,m;
char migong[1005][1005];
int dir[4][2]={0,-1,0,1,1,0,-1,0};
struct node{int x,y;int dis;
}; void BFS(int xx,int yy)
{queue<node> q2;struct node p1,p2,p3;p1.x = xx;p1.y = yy;p1.dis = 0;q2.push(p1);while(!q2.empty()){p2 = q2.front();q2.pop();if(migong[p2.x][p2.y]=='E'){ans = p2.dis;return;}flag[p2.x][p2.y] = 1;for(int i=0;i<4;i++){p3 =p2;p3.x+=dir[i][0];p3.y+=dir[i][1];if(flag[p3.x][p3.y]!=1&&p3.y<=m&&p3.y>=1&&p3.x>=1&&p3.x<=n&&migong[p3.x][p3.y]!='#'){p3.dis++;q2.push(p3);}}}
}
int main()
{int xx,yy;cin>>n>>m;for(int i = 1;i<=n;i++){for(int j = 1;j<=m;j++){cin>>migong[i][j];if(migong[i][j]=='S'){xx = i;yy = j;}}}BFS(xx,yy);cout<<ans<<endl;}

算法与数据结构实验题 4.17 Maze相关推荐

  1. 算法与数据结构实验题 10.23 寡人的难题

    算法与数据结构实验题 10.23 寡人的难题 ★实验任务 寡人心系天下为国为民,想要在历史中留下点痕迹,就必须要让国家强盛起来,正所谓想致富先修路,寡人觉得去修路,那些吃干饭的大臣给了寡人很多条要修的 ...

  2. 算法与数据结构实验题 10.16 被Gank的亚索

    算法与数据结构实验题 10.16 被Gank的亚索 ★实验任务 "哈撒给~",亚索一个Q打中了残血的维克多并挂上了点燃,正当亚索准备单杀维克多时,突然一声大喝!从两边草丛中窜出了两 ...

  3. 算法与数据结构实验题 10.23 寡人的难题——Kurskal算法

    ★实验任务 寡人心系天下为国为民,想要在历史中留下点痕迹,就必须要让国家强盛起来,正所谓想致富先修路,寡人觉得去修路,那些吃干饭的大臣给了寡人很多条要修的道路,奈何国库空虚,寡人只能选择其中一些道路, ...

  4. 算法与数据结构实验题 6.4 Summary

    ★实验任务 可怜的 Bibi 丢了好几台手机以后,看谁都像是小偷,他已经在小本本上记 下了他认为的各个地点的小偷数量. 现在我们将 Bibi 的家附近的地形抽象成一棵有根树.每个地点都是树上的 一个节 ...

  5. 算法与数据结构实验题 5.18 小孩的游戏

    ★实验任务 一群小孩子在玩游戏,游戏规则是这样子,给了一些卡片,上面有数字,现在要把卡片按照某一种序列排好,让这些数字重新链接组合成一个大数,求最大的数是什么. ★数据输入 第一行一个整数N 接下来N ...

  6. 算法与数据结构实验题 7.4 玩游戏的亚索 (最小支撑树)

    1.题目: 2.代码: #include<cstdio> #include<iostream> #include<algorithm> using namespac ...

  7. 算法与数据结构实验题 8.21 森林冰火人

    本题的关键在于:每有一个雪人融化成为"0"的体积,就把它移到整个数组的最前面去.这样可以减少用时.第一次交的时候卡在这个上面了,time limit exceeded! #incl ...

  8. 三元组顺序表表示的稀疏矩阵加法_数据结构实验题(三元组顺序表表示的稀疏矩阵转置运算)...

    题目描述: 思路: 先用三元顺序表存放稀疏矩阵 typedef struct{ int row, col; int elem;} Elem;typedef struct{ int Row, Col, ...

  9. 算法与数据结构1800题 之 栈和队列

    b,c 栈已经存在 栈ADT initStack(&S):初始化一个空栈 StackEmpty(S):判断栈是否为空 Push(&S,x):进栈 Pop(&S,&x): ...

最新文章

  1. 正则表达式学习神器!
  2. 开启报名 | 青源 Salon 第 1 期:强化学习专场,报告,海报,激辩,这是年轻人的会场
  3. 恭喜!神策数据荣登投资界 2020 年 Venture50 风云榜
  4. net4.0 兼容2.0的方法
  5. 魔兽最多人的服务器,魔兽怀旧服:70级热门服务器人口一览!这4大服最值得建号投入!...
  6. Angular HTML template的解析位置
  7. 51单片机并行I/O口工作原理
  8. python url编码_python url编码和解码
  9. nodejs笔记--Events篇(二)
  10. getElementById和querySelector方法的区别
  11. 翻译:Google研究:回顾2020年并展望2021年 - Jeff Dean
  12. excel怎么设置自动计算_Excel工作进度表,自动甘特进度图,函数计算简单实用...
  13. python 获取麦克风声音_python调用pyaudio使用麦克风录制wav声音文件的教程
  14. 基于VUE的前端架构设计
  15. Tkinter模块GUI界面化编程实战(三)——2048小游戏(含详解及完整源码、完整程序下载链接)
  16. VSFTPD 上传文件 200 227 553错误
  17. select_related和prefetch_related的用法与区别
  18. 张宇用的【数学公式壁纸】大公开!
  19. Maven Resources Plugin的Filtering功能的Bug
  20. 查看linux [Fedora] 系统信息

热门文章

  1. ***BAT机器学习面试1000题系列
  2. 《OpenCV3编程入门-毛星云》第一部分 快速上手OpenCV
  3. jsp 开发模型 day
  4. C语言交换函数:传值函数与传址函数的区别
  5. 涨价停不下来?最主要的元凶还是闪存
  6. 面试题:设计模式记不住,来看看怎么办?
  7. Java poi的基本操作(直接ctlr+c,ctrl+v)
  8. JFinal Weixin 1.9 发布,微信极速 SDK
  9. 【USB接口电涌是什么故障】
  10. c#使用正则表达式获取TR中的多个TD_[Python从零到壹] 四.网络爬虫之入门基础及正则表达式抓取博客案例...