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)相关推荐

  1. bzoj1671 Knights of Ni 骑士 BFS

    Description 贝茜遇到了一件很麻烦的事:她无意中闯入了森林里的一座城堡,如果她想回家,就必须穿过这片由骑士们守护着的森林.为了能安全地离开,贝茜不得不按照骑士们的要求,在森林寻找一种特殊的灌 ...

  2. [luogu] P2498 [SDOI2012]拯救小云公主 二分答案+bfs

    前言 以为二分的是人到BOOS的距离 没想到可以直接二分BOOS的攻击距离 传送门 : 思路 BFS待研究 CODE typedef pair<int,int> pii; map<i ...

  3. 拯救行动(变种bfs)

    总时间限制: 10000ms 内存限制: 65536kB 描述 公主被恶人抓走,被关押在牢房的某个地方.牢房用N*M (N, M <= 200)的矩阵来表示.矩阵中的每项可以代表道路(@).墙壁 ...

  4. ********广度优先搜索*********

    目录 BFS算法: 广度优先搜索算法 POJ 3278 Catch That Cow 百练 4116:拯救行动 BFS算法: 思路: 1.从初始状态S开始,利用规则,生成下一层的状态. 2.顺序检查下 ...

  5. 2019年南京大学计算机系暨人工智能学院开放日和九月推免全记录

    背景 南京大学计算机系暨人工智能学院的开放日分两场,时间大概在七月中旬和七月下旬.其中南京本地的学生参加七月中旬的,外地学生参加七月下旬的.两次开放日上机考试的题目不同,难度也不同,按照以往的惯例都是 ...

  6. 计蒜客题解——T1213:拯救行动

    题目相关 题目链接 计蒜客 OJ,https://nanti.jisuanke.com/t/T1213. 题目描述 公主被恶人抓走,被关押在牢房的某个地方.牢房用 N×M(N,M≤200) 的矩阵来表 ...

  7. Java实现 计蒜客 拯救行动

    拯救行动 公主被恶人抓走,被关押在牢房的某个地方.牢房用 N \times M (N, M \le 200)N×M(N,M≤200) 的矩阵来表示.矩阵中的每项可以代表道路(@).墙壁(#).和守卫( ...

  8. OpenJ_Bailian-4116. 拯救公主

    题面如下: 公主被恶人抓走,被关押在牢房的某个地方.牢房用N*M (N, M <= 200)的矩阵来表示.矩阵中的每项可以代表道路(@).墙壁(#).和守卫(x).  英勇的骑士(r)决定孤身一 ...

  9. 北大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, ...

  10. 【数据结构与算法】之深入解析“地下城游戏”的求解思路与算法示例

    一.题目要求 一些恶魔抓住了公主(P)并将她关在了地下城的右下角,地下城是由 M x N 个房间组成的二维网格,我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主 ...

最新文章

  1. yolov3网络结构笔记
  2. 深度学习中的随机种子
  3. 字符设备驱动程序的传统写法
  4. Python 操作 Excel,总有一个模块适合自己
  5. python中 time、datetime、random模块
  6. docker中部署hadoop、zookeeper、hbase伪分布式并上传到阿里云远程仓库
  7. 重写AgileEAS.NET SOA 中间件平台账号密码的加密算法
  8. git reset之后找回本地未提交(未add+commit)的代码
  9. 如何将SAP C4C TI页面的值传递到Embedded Component里去
  10. Marketing Cloud API消费entity unsupported format错误消息的处理
  11. asp.net + ajax + sqlserver 自动补全功能,asp.net+ajax+sqlserver自动补全功能实现解析
  12. 经典面试题(45):以下代码将输出的结果是什么?
  13. Koa2-下载-文件流
  14. php排序算法面试题,PHP算法面试题目及答案
  15. 虚幻引擎2D游戏开发教程系列
  16. 考PMP真的有用吗?(含pmp资料分享)
  17. 洛谷P4158 [SCOI2009]粉刷匠 题解
  18. wps单独文档无法连接服务器,为什么wps没有云服务器
  19. 让你彻底明白什么是BFC及作用?
  20. DAZ3D STUDIO Iray照明教程

热门文章

  1. 用手机怎么看服务器里的文件,手机查看云服务器文件
  2. linux运行360wifi,Linux(Ubuntu)下的无线网络卡上的小米和360wifi教程
  3. Aras Innovator 11 sp2 IE客户端设置
  4. 葡萄柚能放冰箱保存吗 葡萄柚怎么保存时间长
  5. Samba共享服务详解
  6. 8.9.2 疯狂填词
  7. CNN | 00卷积神经网络应用
  8. 计算机设计大赛软件开发类作品填写模板
  9. jave获取视频时长
  10. directx.sys和svchost.com