ZZUOJ 公主与骑士 (BFS)
4316: 公主与骑士
时间限制: 1 Sec 内存限制: 128 MB
题目描述
美丽的公主被恶龙抓走了,国王召集全国各地最勇敢的骑士前往恶龙的巢穴救出公主。一个英勇的骑士冒死潜入恶龙的宫殿找到了公主殿下,现在他们想要尽快的走出宫殿,否则恶龙就会苏醒,杀死骑士。
现在交给你迷宫的地图,请告诉骑士以最短的道路需要走到出口需要走多少步。
例如上图中至少需要8步
输入
第一行一个整数n代表共有n个测试样例 (n <= 3)
每一个样例第一行两个整数r,c代表恶龙宫殿的长和宽 ( 1 <= r,c <= 200)
1 保证只包含字符“*”,“ ”,“S”,“T”四种字符。“S”代表公主和骑士所处的位置,“T”代表出口所在的位置
2 保证地图中一定存在一个起点S和一个终点T
3 保证边界处一定有墙壁
输出
输出S到T的最短距离,如果不能走出去则输出-1。
样例输入
1 5 9********** T ** * ** S **********
样例输出1
6
代码:
#include <bits/stdc++.h>
using namespace std;struct Node
{int x;int y;int step;
};
int walkx[4] = { 0, 0, 1, -1 }, walky[4] = { 1, -1, 0, 0 };
int main()
{int n;cin >> n;while (n--){int r, c, result = -1;char mp[200][200];//mp储存是否走过,是的走到queue <Node>q; //Node储存走到了哪,走了多少步,和mp联系起来使用来模拟整个过程cin >> r >> c;getchar();for (int i = 0; i<r; i++){for (int j = 0; j<c; j++){mp[i][j] = getchar();if (mp[i][j] == 'S'){Node sta = { i, j, 0 };q.push(sta);}}getchar();}while (q.size() && result == -1){Node node = q.front();q.pop();for (int i = 0; i<4; i++)//遍历这个位置的四个方向{int newx = node.x + walkx[i], newy = node.y + walky[i];//为了后面更好算if (mp[newx][newy] == 'T')//走到了{result = node.step + 1;break;}if (mp[newx][newy] == ' '){Node next = { newx, newy, node.step + 1 };mp[newx][newy] = '*';//标记地图,不可以再走了q.push(next);}}}cout << result << endl;}return 0;
}
ZZUOJ 公主与骑士 (BFS)相关推荐
- bzoj1671 Knights of Ni 骑士 BFS
Description 贝茜遇到了一件很麻烦的事:她无意中闯入了森林里的一座城堡,如果她想回家,就必须穿过这片由骑士们守护着的森林.为了能安全地离开,贝茜不得不按照骑士们的要求,在森林寻找一种特殊的灌 ...
- [luogu] P2498 [SDOI2012]拯救小云公主 二分答案+bfs
前言 以为二分的是人到BOOS的距离 没想到可以直接二分BOOS的攻击距离 传送门 : 思路 BFS待研究 CODE typedef pair<int,int> pii; map<i ...
- 拯救行动(变种bfs)
总时间限制: 10000ms 内存限制: 65536kB 描述 公主被恶人抓走,被关押在牢房的某个地方.牢房用N*M (N, M <= 200)的矩阵来表示.矩阵中的每项可以代表道路(@).墙壁 ...
- ********广度优先搜索*********
目录 BFS算法: 广度优先搜索算法 POJ 3278 Catch That Cow 百练 4116:拯救行动 BFS算法: 思路: 1.从初始状态S开始,利用规则,生成下一层的状态. 2.顺序检查下 ...
- 2019年南京大学计算机系暨人工智能学院开放日和九月推免全记录
背景 南京大学计算机系暨人工智能学院的开放日分两场,时间大概在七月中旬和七月下旬.其中南京本地的学生参加七月中旬的,外地学生参加七月下旬的.两次开放日上机考试的题目不同,难度也不同,按照以往的惯例都是 ...
- 计蒜客题解——T1213:拯救行动
题目相关 题目链接 计蒜客 OJ,https://nanti.jisuanke.com/t/T1213. 题目描述 公主被恶人抓走,被关押在牢房的某个地方.牢房用 N×M(N,M≤200) 的矩阵来表 ...
- Java实现 计蒜客 拯救行动
拯救行动 公主被恶人抓走,被关押在牢房的某个地方.牢房用 N \times M (N, M \le 200)N×M(N,M≤200) 的矩阵来表示.矩阵中的每项可以代表道路(@).墙壁(#).和守卫( ...
- OpenJ_Bailian-4116. 拯救公主
题面如下: 公主被恶人抓走,被关押在牢房的某个地方.牢房用N*M (N, M <= 200)的矩阵来表示.矩阵中的每项可以代表道路(@).墙壁(#).和守卫(x). 英勇的骑士(r)决定孤身一 ...
- 北大2018acm暑期课三简单搜索
迷宫问题 描述 定义一个二维数组: 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, ...
- 【数据结构与算法】之深入解析“地下城游戏”的求解思路与算法示例
一.题目要求 一些恶魔抓住了公主(P)并将她关在了地下城的右下角,地下城是由 M x N 个房间组成的二维网格,我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主 ...
最新文章
- yolov3网络结构笔记
- 深度学习中的随机种子
- 字符设备驱动程序的传统写法
- Python 操作 Excel,总有一个模块适合自己
- python中 time、datetime、random模块
- docker中部署hadoop、zookeeper、hbase伪分布式并上传到阿里云远程仓库
- 重写AgileEAS.NET SOA 中间件平台账号密码的加密算法
- git reset之后找回本地未提交(未add+commit)的代码
- 如何将SAP C4C TI页面的值传递到Embedded Component里去
- Marketing Cloud API消费entity unsupported format错误消息的处理
- asp.net + ajax + sqlserver 自动补全功能,asp.net+ajax+sqlserver自动补全功能实现解析
- 经典面试题(45):以下代码将输出的结果是什么?
- Koa2-下载-文件流
- php排序算法面试题,PHP算法面试题目及答案
- 虚幻引擎2D游戏开发教程系列
- 考PMP真的有用吗?(含pmp资料分享)
- 洛谷P4158 [SCOI2009]粉刷匠 题解
- wps单独文档无法连接服务器,为什么wps没有云服务器
- 让你彻底明白什么是BFC及作用?
- DAZ3D STUDIO Iray照明教程