走出迷宫(信息学奥赛一本通-T1254)
【题目描述】
当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。
假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路。
【输入】
第一行是两个整数n和m(1≤n,m≤100),表示迷宫的行数和列数。
接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符‘.’表示空地,‘#’表示墙,‘S’表示起点,‘T’表示出口。
【输出】
输出从起点到出口最少需要走的步数。
【输入样例】
3 3
S#T
.#.
...【输出样例】
6
【源程序】
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 101
#define MOD 2520
#define E 1e-12
using namespace std;
int r,c;
char a[N][N];
bool vis[N][N];
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
struct node
{int x;int y;int step;
}q[N*100];
void bfs(int sx,int sy,int ex,int ey)
{int head=1,tail=1;memset(vis,0,sizeof(vis));vis[sx][sy]=1;q[tail].x=sx;q[tail].y=sy;q[tail].step=0;tail++;while(head<tail){int x=q[head].x;int y=q[head].y;int step=q[head].step;if(x==ex&&y==ey){printf("%d\n",step);break;}for(int i=0;i<4;i++){int nx=x+dir[i][0];int ny=y+dir[i][1];if(nx>=0&&nx<r&&ny>=0&&ny<c&&vis[nx][ny]==0&&a[nx][ny]=='.'){vis[nx][ny]=1;q[tail].x=nx;q[tail].y=ny;q[tail].step=step+1;tail++;}}head++;}
}
int main()
{int start_x,start_y,end_x,end_y;scanf("%d%d",&r,&c);for(int i=0;i<r;i++)scanf("%s",a[i]);for(int i=0;i<r;i++)for(int j=0;j<c;j++){if(a[i][j]=='S'){start_x=i;start_y=j;}if(a[i][j]=='T'){end_x=i;end_y=j;a[i][j]='.';}}bfs(start_x,start_y,end_x,end_y);return 0;
}
走出迷宫(信息学奥赛一本通-T1254)相关推荐
- 信息学奥赛一本通(1254:走出迷宫)
1254:走出迷宫 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 9105 通过数: 4245 [题目描述] 当你站在一个迷宫里的时候,往往会被错综复杂的 ...
- 信息学奥赛一本通 1254:走出迷宫 | OpenJudge NOI 2.5 6264:走出迷宫
[题目链接] ybt 1254:走出迷宫 OpenJudge NOI 2.5 6264:走出迷宫 [题目考点] 1. 广搜 迷宫问题 [解题思路] 广搜,迷宫问题模板题. 当数据量很小时,用深搜的方法 ...
- 信息学奥赛一本通:1219.马走日
信息学奥赛一本通:1219.马走日 1219:马走日 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 7406 通过数: 3863 [题目描述] 马在中国象棋以日字形规则移动. 请 ...
- 信息学奥赛一本通 1255:迷宫问题 | OpenJudge NOI 2.5 7084:迷宫问题
[题目链接] ybt 1255:迷宫问题 OpenJudge NOI 2.5 7084:迷宫问题 [题目考点] 1. 广搜 迷宫问题 输出走出迷宫的路径 [解题思路] 1. 广搜解迷宫问题 广搜,迷宫 ...
- 信息学奥赛一本通 (C++)上机练习
信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...
- 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)
信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法 更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...
- [信息学奥赛一本通][POJ 2251]地牢大师
来源:<信息学奥赛一本通> , POJ 2251 算法标签 BFS 题目描述 你现在被困在一个三维地牢中,需要找到最快脱离的出路! 地牢由若干个单位立方体组成,其中部分不含岩石障碍可以直接 ...
- 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例
题目链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 题目描述: 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动 ...
- 信息学奥赛一本通 第五版(C++版)
信息学奥赛一本通 第五版(C++版)第一部分 C++语言 第一章 C++语言入门 第二节 C++语言程序设计 P15 1. 编写一个能够输出Hello,World!的程序,这个程序常常作为一个初学者接 ...
最新文章
- 550种Blender风格化笔刷素材
- lintcode :Partition List 链表划分
- SLAM: Inverse Depth Parametrization for Monocular SALM
- 软件工程之个人项目--词频统计
- WePY:在质疑中前进 | 文末福利
- spring—配置数据源
- c mysql 添加数据类型_MYSQL的常用命令和增删改查语句和数据类型
- 中科同向 备份软件 引领科技 存储未来
- Docker部署项目的步骤,按步骤一步一步来,一切都会成功
- 74CMS 3.0 CSRF漏洞
- JAVA 实现高级计算器程序
- 计算机左侧没有桌面菜单栏,我的电脑左侧工具栏忽然不见了
- Android TextView 上下滑动 左右滑动设置
- 深入研究Espresso的Idling Resource
- 学用circle画圆形。
- easyui tabs 的href和content属性
- effective java之 builder模式
- 计算机重启机箱亮显示器不亮,电脑重启显示器不亮如何解决
- 地名能否作为商标使用
- 程序设计思维月模拟题2-CSP201609-3 炉石传说
热门文章
- 爱情才是程序员的第一生产力
- 索要 2.3 亿元赎金!富士康遭遇黑客攻击
- 使用proguard混淆java web项目代码
- UI标签库专题五:JEECG智能开发平台 Tabs(选项卡父标签)
- Java容器 | 基于源码分析List集合体系
- 结构与算法(04):排序规则与查找算法
- 数据中台赋能企业数字化转型的四个关键成功因素
- JavaScript从初级往高级走系列————Virtual Dom
- 《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一1.3 建立自动化策略...
- 2016 China Collegiate Programming Contest Final