计蒜客:bfs求解迷宫游戏

题目描述:

蒜头君在你的帮助下终于逃出了迷宫,但是蒜头君并没有沉浸于喜悦之中,而是很快的又陷入了思考,从这个迷宫逃出的最少步数是多少呢?
输入格式
第一行输入两个整数 nn 和 mm,表示这是一个 n \times mn×m 的迷宫。
接下来的输入一个 nn 行 mm 列的迷宫。其中 ‘S’ 表示蒜头君的位置,’‘表示墙,蒜头君无法通过,’.‘表示路,蒜头君可以通过’.'移动,'T’表示迷宫的出口(蒜头君每次只能移动到四个与他相邻的位置——上,下,左,右)。
输出格式
输出整数,表示蒜头君逃出迷宫的最少步数,如果蒜头君无法逃出迷宫输出 -1−1。
数据范围
1 \le n, m \le 101≤n,m≤10。
输出时每行末尾的多余空格,不影响答案正确性
样例输入1
3 4
S**.
.
***T
样例输出1
-1

解题思路:

由题意得,求得最小步数。可以广搜(bfs)也可以深搜(dfs)。但是深搜搜到即是最优解,且效率快得多了,因此使用广搜(bfs)。

AC代码:

#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
#include <math.h>
#include <queue>
#include <vector>
using namespace std;
int n,m;
char map[100][100];
int vis[100][100];//标记是否访问过
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//四个方向的坐标的变化量
bool in(int x,int y)//是否出界
{return x>=0&&x<n&&y>=0&&y<m;
}
struct node
{int x,y,step;
};
int bfs(int x,int y)
{int i;node start,next;//start为起点的结点 ,next为下一个要遍历的结点 start.x=x;start.y=y;start.step=0;queue<node>q;q.push(start);vis[x][y]=1;while(!q.empty()){node now=q.front();q.pop();for(i=0;i<4;i++){int xx=now.x+dir[i][0];int yy=now.y+dir[i][1];if(!in(xx,yy)||vis[xx][yy]||map[xx][yy]=='*')continue;vis[xx][yy]=1;next.x=xx;next.y=yy;next.step=now.step+1;if(map[xx][yy]=='T')//注意:广搜,搜到即是最小值 return next.step;q.push(next);}}
}
int main()
{int i,j;cin>>n>>m;for(i=0;i<n;i++)for(j=0;j<m;j++)cin>>map[i][j];int x,y;for(i=0;i<n;i++)for(j=0;j<m;j++)if(map[i][j]=='S')//寻找地图的起点{x=i;y=j;break;} cout<<bfs(x,y)<<endl;return 0;
}

计蒜客:迷宫(二)---bfs相关推荐

  1. 计蒜客:密码锁---bfs

    计蒜客:密码锁-bfs 题目描述: 现在一个紧急的任务是打开一个密码锁.密码由四位数字组成,每个数字从1到9进行编号.每次可以对任何一位数字加1或减1.当将9加1时,数字变为1,当1减1时,数字变为9 ...

  2. 计蒜客难题题库之二 奇怪的国家 python解答

    计蒜客挑战难题之二 奇怪的国家 python解答 题目: 有一个奇怪的国家,里面的国民对于事情的态度永远只有两面.当两个人遇到一起讨论一个事情的时候--两个持赞同观点的人遇到一起后会对这个事情都继续赞 ...

  3. 计蒜客题解——T1214:鸣人和佐助

    题目相关 题目链接 计蒜客 OJ,https://nanti.jisuanke.com/t/T1214. 题目描述 已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置.地图上的每个位置都可以走到 ...

  4. 计蒜客 2020 蓝桥杯大学 A 组省赛模拟赛 (一)题目及解析

    新手,欢迎交流,剩下D题不知如何下手,望大佬指教. 计蒜客 2020 蓝桥杯大学 B 组省赛模拟赛 (一)题目及解析 文章目录 A. 结果填空:计算周长 B. 结果填空:七巧板 C. 结果填空:苹果 ...

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

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

  6. 计蒜客 2020 蓝桥杯大学 B 组省赛模拟赛 (一)题目及解析

    新手,欢迎交流,更新完毕. 计蒜客 2020 蓝桥杯大学 A 组省赛模拟赛 (一)题目及解析 文章目录 A. 结果填空:有趣的数字 B. 结果填空:爬楼梯 C. 结果填空:七巧板 D. 结果填空:苹果 ...

  7. 2020蓝桥杯B 组省赛计蒜客模拟赛(一)题解

    2020蓝桥杯省赛 B 组计蒜客模拟赛(一)目录 试题 A:有趣的数字(结果填空) 试题 B:爬楼梯(结果填空) 试题 C:七巧板(结果填空) 试题 D:苹果(结果填空) 试题 E:方阵(结果填空) ...

  8. 计蒜客2020蓝桥杯大学A组模拟赛题解

    计蒜客2020蓝桥杯大学A组模拟赛题解 蓝桥杯的话,去年拿了C++组的国二.今年报名了新成立的Python组,不知道能不能摸到国一的鱼 模拟赛链接如下: https://www.jisuanke.co ...

  9. 最短路(遍历边)计蒜客—DD坐地铁

    题目: C 城有 n 个站点, m 条双向地铁,每条地铁有一个 companyicompany_icompanyi​表示它的公司,如果连续乘坐同一家公司的地铁只要花 1元钱就好.DD现在想出门找萨摩耶 ...

最新文章

  1. 不明白点积的几何意义
  2. linux-windows主动推送文件同步目录数据 linux-windows数据目录同步
  3. 让Elasticsearch飞起来!——性能优化实践干货
  4. QT的QAudioRecorder类的使用
  5. MYSQL--事务处理
  6. 送福利 | 送书3本 ASP.NET Core 真机拆解
  7. 清华CrossWOZ,助你徒手搭建任务导向对话系统
  8. win10关机后自动重启_Win10关机风扇还在转|解决win10关机后风扇继续转方法
  9. oracle在日本遇到的技术问题
  10. Linux工作笔记034---linux tail命令详解_linux在vi中查找字符串
  11. 公司技术部的罗强月薪10000,要跳槽
  12. Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境
  13. 数据结构中的英文及算法缩写
  14. StreamNative翟佳:若无社区,开源项目可能是个死项目
  15. 回看共识层进化规律,“POS+”也许是公链后期发展的出路
  16. Carla release与ros-bridge
  17. 机器学习和统计学习的区别
  18. lotus notes
  19. 计算机英语个人陈述,英文个人陈述范文汇总,计算机专业
  20. Trapcode套装插件原创图文/视频安装教程 1

热门文章

  1. CentOs7查看防火墙
  2. python3 if语句嵌套_3.2.3 if语句的嵌套
  3. 【精选】新年祝福(C语言),Easyx图形库应用+源代码分享
  4. 《工程伦理》网课第一章课后习题答案
  5. 微信小程序for循环,点击传递参数
  6. 金正昆老师的商务礼仪---第四讲 交际交往中的礼仪理念
  7. 4款提高手机逼格的黑科技APP,一定不要错过!
  8. 海绵宝宝也懂的HTTPS
  9. 全国2013年下半年软考成绩可以查询方式
  10. Kotlin实现网络图片下载和保存