博客
关于我
AcWing-1101.献给阿尔吉侬的花束。
阅读量:133 次
发布时间:2019-02-27

本文共 1321 字,大约阅读时间需要 4 分钟。

阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。

今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。

现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。

迷宫用一个 R×C 的字符矩阵来表示。

字符 S 表示阿尔吉侬所在的位置,字符 E 表示奶酪所在的位置,字符 # 表示墙壁,字符 . 表示可以通行。

阿尔吉侬在 1 个单位时间内可以从当前的位置走到它上下左右四个方向上的任意一个位置,但不能走出地图边界。

输入格式
第一行是一个正整数 T,表示一共有 T 组数据。

每一组数据的第一行包含了两个用空格分开的正整数 R 和 C,表示地图是一个 R×C 的矩阵。

接下来的 R 行描述了地图的具体内容,每一行包含了 C 个字符。字符含义如题目描述中所述。保证有且仅有一个

输出格式
对于每一组数据,输出阿尔吉侬吃到奶酪的最少单位时间。

若阿尔吉侬无法吃到奶酪,则输出“oop!”(只输出引号里面的内容,不输出引号)。

每组数据的输出结果占一行。

数据范围
1<T≤10 ,
2≤R,C≤200
输入样例:
3
3 4
.S…
###.
…E.
3 4
.S…
.E…
3 4
.S…

…E.

输出样例:

5
1
oop!

BFS

#include
using namespace std;int n,m,sx,sy,ex,ey;int dx[]={ 0,1,0,-1},dy[]={ 1,0,-1,0};struct node{ int x; int y; int step;};const int N=250;char a[N][N];bool vis[N][N];node p,xx;int bfs(){ queue
q; q.push(p); vis[p.x][p.y]=1; while(!q.empty()) { xx=q.front(); q.pop(); if(xx.x==ex&&xx.y==ey) return xx.step; for(int i=0;i<4;i++) { int xx1=xx.x+dx[i]; int yy1=xx.y+dy[i]; if(xx1>=0&&xx1
=0&&yy1
>t; while(t--) { memset(vis,false,sizeof(vis)); cin>>n>>m; for(int i=0;i
>a[i][j]; if(a[i][j]=='S') { sx=i; sy=j; } else if(a[i][j]=='E') { ex=i; ey=j; } } } p.x=sx; p.y=sy; p.step=0; int h=bfs(); if(h!=-1) cout<
<

转载地址:http://dumb.baihongyu.com/

你可能感兴趣的文章
Node-RED中解析高德地图天气api的json数据显示天气仪表盘
查看>>
Node-RED中连接Mysql数据库并实现增删改查的操作
查看>>
Node-RED中通过node-red-ui-webcam节点实现访问摄像头并截取照片预览
查看>>
Node-RED中配置周期性执行、指定时间阶段执行、指定时间执行事件
查看>>
Node-RED安装图形化节点dashboard实现订阅mqtt主题并在仪表盘中显示温度
查看>>
Node-RED怎样导出导入流程为json文件
查看>>
Node-RED简介与Windows上安装、启动和运行示例
查看>>
Node-RED订阅MQTT主题并调试数据
查看>>
Node-RED通过npm安装的方式对应卸载
查看>>
node-request模块
查看>>
node-static 任意文件读取漏洞复现(CVE-2023-26111)
查看>>
Node.js 8 中的 util.promisify的详解
查看>>
node.js debug在webstrom工具
查看>>
Node.js Event emitter 详解( 示例代码 )
查看>>
Node.js GET、POST 请求是怎样的?
查看>>
Node.js HTTP模块详解:创建服务器、响应请求与客户端请求
查看>>
Node.js RESTful API如何使用?
查看>>
node.js url模块
查看>>
Node.js Web 模块的各种用法和常见场景
查看>>
Node.js 之 log4js 完全讲解
查看>>