美丽的公主被恶龙抓走了,国王召集全国各地最勇敢的骑士前往恶龙的巢穴救出公主。一个英勇的骑士冒死潜入恶龙的宫殿找到了公主殿下,现在他们想要尽快的走出宫殿,否则恶龙就会苏醒,杀死骑士。
现在交给你迷宫的地图,请告诉骑士以最短的道路需要走到出口需要走多少步。

例如上图中至少需要8步

输入

第一行一个整数n代表共有n个测试样例 (n <= 3)
每一个样例第一行两个整数r,c代表恶龙宫殿的长和宽 ( 1 <= r,c <= 200)
1 保证只包含字符“*”,“ ”,“S”,“T”四种字符。“S”代表公主和骑士所处的位置,“T”代表出口所在的位置
2 保证地图中一定存在一个起点S和一个终点T
3 保证边界处一定有墙壁

输出

输出S到T的最短距离,如果不能走出去则输出-1。

思路:裸BFS练习题

#include<bits/stdc++.h>
using namespace std;
char mp[205][205];
int vis[205][205];
int dis[4][2]={{1,0},{0,1},{0,-1},{-1,0}};
int cnt;
int n,m;
struct Node
{int x,y;int step;
};
int bfs(int u,int v)
{int flag=0;Node node,nex;node.x=u;node.y=v;node.step=0;queue<Node> q;vis[u][v]=1;q.push(node);while(!q.empty()){node=q.front();q.pop();for(int i=0;i<4;i++){int x=node.x+dis[i][1];int y=node.y+dis[i][0];if(x>=0&&x<n&&y>=0&&y<m&&mp[x][y]!='*'&&!vis[x][y]){if(mp[x][y]=='T'){return node.step+1;}vis[x][y]=1;nex.step=node.step+1;nex.x=x;nex.y=y;q.push(nex);}}}
return -1;}
int main()
{int t;scanf("%d",&t);while(t--){cnt=0;memset(vis,0,sizeof(vis));memset(mp,0,sizeof(mp));cin>>n>>m;getchar();string str;for(int i=0;i<n;i++){getline(cin,str);for(int j=0;j<m;j++){mp[i][j]=str[j];}}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(mp[i][j]=='S'){cnt=bfs(i,j);}}}printf("%d\n",cnt);}
}

公主与骑士-ZZUOJ相关推荐

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

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

  2. 174. Dungeon Game 地下城游戏

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

  3. leetcode174. 地下城游戏(动态规划)

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

  4. LeetCode 174. 地下城游戏(DP)

    文章目录 1. 题目 2. 解题 1. 题目 一些坏人抓住了公主(P)并将她关在了地下城的右下角. 地下城是由 M x N 个房间组成的二维网格. 我们英勇的骑士(K)最初被安置在左上角的房间里, 他 ...

  5. Leetcode--174. 地下城游戏

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

  6. 朵朵糖故事机器人怎么更新_“故事贩卖机”专栏创始人温酒的新作,奇幻世界的暖心物语很治愈...

    我有酒,你有故事吗? 2015年,知乎上一个叫"故事贩卖机"的专栏横空出世,凭着一个个脑洞大开的故事,这个温吞而又温暖的专栏很快得到了读者的认可.而其中的创始人兼主打写手温酒,更是 ...

  7. leetcode题库174 地下城游戏

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

  8. Bailian4116 拯救行动【优先搜索】

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

  9. 拯救行动 OpenJ_Bailian - 4116

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

  10. 2022仿写b站首页

    仿写b站首页 ```html <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...

最新文章

  1. Java黑皮书课后题第4章:*4.2(几何:最大圆距离)最大圆面积是指球面上两个点间的距离。编写一个程序,提示用户以度为单位输入地球上两个点的经纬度,显示其最大圆距离值
  2. Spark在美团的实践
  3. (6)Zynq AXI_HP接口介绍
  4. Extjs 从grid中导出Excel表格。后台为C#(绝对好用)
  5. jdk中ArrayList的实现
  6. php excel parser pro v4.2,PHP Excel Parser Pro v4.2怎么用
  7. java开发简历编写_编写Java开发人员简历的完整指南
  8. 《如何阅读一本书》完整版读书笔记
  9. Vscode 快速打开setting.json
  10. 木瓜移动每日资讯0602:“店小秘”宣布完成1.35亿元人民币B+轮融资
  11. 读名老中医之路笔记(三)
  12. js逆向案例-obsfuscator混淆
  13. 机器学习 —— 支持向量机
  14. 我是如何做到使得开源系统拥有安全的防护框架的呢?
  15. Windows 下 Let's Encrypt申请证书及使用
  16. VS Code运行C++程序的配置过程
  17. python3 pygame 黑白棋 翻转棋_Python3 + pygame 实现黑白棋(翻转棋)
  18. mysql外连接的含义_MySQL连接查询,内连接,外连接,全连接,交叉连接_cly_32的博客-CSDN博客...
  19. 深入理解搜索引擎——开篇
  20. web开发过程中遇到的问题_您将在Web开发中遇到的坏消息

热门文章

  1. 在哪里看服务器cpu占用率,top命令查看服务器cpu使用情况等
  2. mariaDB数据库安装
  3. 实时错误‘94’无效使用null值
  4. vm虚拟机 加密密码 破解术(亲测可用!)
  5. 百度地图api使用时标注图标显示不出来
  6. CSS外边距重叠和高度坍塌完美解决
  7. 用好工具,在团队协作中运筹帷幄
  8. Rme Babyface Pro FS娃娃脸声卡安装调试教程
  9. 服务器不能用pe安装win7系统安装,使用PE安装win7系统失败了怎么办
  10. java实现定时自动打卡脚本_android 定时自动上班手机打卡签到实例