问题 H: 逃出迷宫

时间限制: 1 Sec  内存限制: 128 MB
提交: 6  解决: 3
[提交][状态][讨论版]

题目描述

现在有一个迷宫,'a'代表起点位置,'.'代表可以通行的路,'#'代表不能通过的墙,'x'代表迷宫的守卫,'r'代表终点位置,
现在要求你算出起点位置到终点位置的最短时间,其中通过'.'时,消耗1个单位时间,通过'x'消耗两个单位时间。

输入

多组测试数据,输入两个整数(X,Y)代表迷宫的长和宽,之后输入迷宫。

输出

如果可以到达终点,输出到达终点的最短时间。如果不能到达终点输出"Oh No!"。

样例输入

7 8
#.#####.
#.a#..r.
#..#x...
..#..#.#
#...##..
.#......
........

样例输出

13

提示

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<queue>
using namespace std;
char a[500][500];
struct node
{int x,y,step;friend bool operator<(node a,node b){return a.step>b.step;//“>"是步数少的先出队,"<"步数大的先出队}
}s,e;
int n,m;
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
void bfs()
{priority_queue<node>q;node temp,t;q.push(s);a[s.x][s.y]='#';while(!q.empty()){temp=q.top();q.pop();if(temp.x==e.x&&temp.y==e.y){cout<<temp.step<<endl;return;}for(int i=0;i<4;i++){t.x=temp.x+dir[i][0];t.y=temp.y+dir[i][1];if(t.x>=0&&t.x<n&&t.y>=0&&t.y<m&&a[t.x][t.y]!='#')//满足条件的进队,步数少的先出队,所以要用优先队列{if(a[t.x][t.y]=='x')t.step=temp.step+2;elset.step=temp.step+1;a[t.x][t.y]='#';q.push(t);}}}cout<<"Oh No!"<<endl;
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF){int i,j;for(i=0;i<n;i++)for(j=0;j<m;j++){cin>>a[i][j];if(a[i][j]=='a'){s.x=i;s.y=j;s.step=0;}if(a[i][j]=='r'){e.x=i;e.y=j;}}bfs();}
}

转载于:https://www.cnblogs.com/xunalove/p/6809206.html

问题 H: 逃出迷宫相关推荐

  1. CSUST选拔赛题解之-Problem H: 逃出监狱

    Problem H: 逃出监狱 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 116  Solved: 42 [Submit][Status][Web ...

  2. 动画演示深度优先算法搜寻逃出迷宫的路径

    深度优先算法(DFS 算法)是什么? 寻找起始节点与目标节点之间路径的算法,常用于搜索逃出迷宫的路径.主要思想是,从入口开始,依次搜寻周围可能的节点坐标,但不会重复经过同一个节点,且不能通过障碍节点. ...

  3. 老鼠逃出迷宫(递归)

    如图一样的迷宫,红色部分代表有障碍物,老鼠从(1,1)坐标开始出发,坐标(6,5)代表迷宫出口,求出老鼠的逃离路径. /*老鼠出迷宫问题*/ public class P225MiGong {//先用 ...

  4. 逃出迷宫完整算法C++

    迷宫图案,白色代表通道,黑色代表墙.  迷宫入口坐标(1,1),出口坐标(8,8)   0 1 2 3 4 5 6 7 8 9   0■■■■■■■■■■   1■□□■□□□■□■   2■□□■□ ...

  5. java实现老鼠出迷宫

    如图一只小老鼠从起点通过一些障碍到达终点,四周的墙壁不能通行,求通过计算得出迷宫路径,使老鼠成功逃出迷宫 算法设计 ①分而治之思想: 首先将老鼠出迷宫问题分成两部分求解,第一,迷宫的设计,第二,迷宫的 ...

  6. 递归回溯——老鼠出迷宫

    目录 前言 设计思路 绘制地图 寻找出路 绘制路线 总结 前言 这是一道关于递归回溯的经典题目,在布下障碍的迷宫中,为老鼠朋友找到一条可以逃出困境的路线,本文将为大家详细讲解如何运行递归的方法让老鼠走 ...

  7. Java-老鼠出迷宫(递归)

    文章目录 问题描述 一.解题思想 二.编写代码 1.创建迷宫 2.写出findway方法 3.整体代码测试如下 三.总结 问题描述 一只小老鼠从起点通过一些障碍到达终点,四周的墙壁不能通行,请设计出迷 ...

  8. 逃出你的肖申克(二):仁者见仁智者见智?从视觉错觉到偏见

    <Making Up the Mind>上讲了这么一个简单但深刻的实验: 我们看到这张图片的第一反应是:5个凸的按钮,1个凹的按钮. 现在仅仅将图片上下颠倒一下: 在我们眼中立即就变成了: ...

  9. C++实践 走出迷宫

    c和c++学了快一个学期了,感觉也编不出什么像样的程序,不是解决数学问题就是打印图形,感觉没什么劲.今天找了一个有趣的题目来做做,这是imooc上老师布置的一个案例.先不管算法好坏,来实现一个人走出迷 ...

最新文章

  1. SAP UI5 log level
  2. 23种设计模式 -比喻
  3. Spring MVC如何测试Controller(使用springmvc mock测试)
  4. 一生温暖纯良,不舍爱与自由
  5. java方法介绍_Java 方法介绍
  6. Java 18 新特性
  7. 字符点击效果实现——YYLabel和YYTextHighlight
  8. 韩国NF功放芯片在音频音响领域的应用
  9. 2021-11-24【数据结构练习题】【二叉搜索树的插入删除】
  10. 微课--Python使用UDP协议实现局域网内屏幕广播(40分钟)
  11. HashMap的fast-fail和ConcurrentHashMap的fail-safe实例
  12. JS屏蔽功能类(屏蔽F5,退格键,空格键......
  13. 合肥通用职业技术学院计算机专业,2020年安徽高考专科提前批及大专录取时间及录取结果查询...
  14. php artisan tanker,Artisan 开发
  15. 你是我的四月天[转自天涯]
  16. Swi-Prolog 数值约束
  17. medoo update mysql_更新方法:Update API-Medoo使用指南
  18. IIS Express 使用 临时建站调试,功能短小精悍。
  19. 【微信小程序】background-image设置背景图片
  20. 服务器TIME_WAIT过多

热门文章

  1. 富士协议转换网关WTGNet-FJ
  2. 计算机室设备自查报告,计算机室自检自查报告
  3. 小练一下实现音乐下载器
  4. win7无线局域网_FAST 讯捷路由器的无线应用
  5. Win11三指触控怎么设置?
  6. 1M单位换算:1M=2^20 还是1M=10^6?
  7. 2021年起重机司机(限桥式起重机)模拟试题及起重机司机(限桥式起重机)实操考试视频
  8. 互联网开发之路(一):痛苦但去,快乐自来
  9. 便携挂脖风扇开发方案
  10. 2 javascript视频教程 变量和数据类型