NOI 题库 6264
6264 走出迷宫
- 描述
-
当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。
假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路。 - 输入
-
第一行是两个整数n和m(1<=n,m<=100),表示迷宫的行数和列数。
接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符'.'表示空地,'#'表示墙,'S'表示起点,'T'表示出口。 - 输出
- 输出从起点到出口最少需要走的步数。
- 样例输入
-
3 3 S#T .#. ...
- 样例输出
-
6
1 #include "bits/stdc++.h" 2 3 using namespace std ; 4 const int maxN = 1e5 + 1e3 ; 5 const int INF = 2147483647 ; 6 7 int start_x , start_y , des_x , des_y ; 8 const int dx [ ] = { 1 , 0 , -1 , 0 } ; 9 const int dy [ ] = { 0 , 1 , 0 , -1 } ; 10 11 char mp[ 550 ][ 550 ] ; 12 int pos_x[ maxN ] , pos_y [ maxN ] ,step[ maxN ] ; 13 void Scan ( const int n , const int m ) { 14 getchar ( ) ; 15 for ( int i=1 ; i<=n ; ++i ) { 16 for ( int j=1 ; j<=m ; ++j ) { 17 mp[ i ][ j ] = getchar ( ) ; 18 if ( mp [ i ][ j ] == 'S' ) { 19 start_x = i ; 20 start_y = j ; 21 } 22 if( mp[ i ][ j ] == 'T' ) { 23 des_x = i ; 24 des_y = j ; 25 mp[ i ][ j ] = '.' ; 26 } 27 } 28 getchar ( ) ; 29 } 30 } 31 32 void BFS ( const int n , const int m ) { 33 int Head = 0 , Tail = 1 ; 34 bool Get_Target = false ; 35 pos_x[ Tail ] = start_x ; 36 pos_y[ Tail ] = start_y ; 37 step[ Tail ] = 0 ; 38 mp[ start_x ][ start_y ] = '#' ; 39 while ( Head < Tail ) { 40 ++ Head ; 41 for ( int i=0 ; i<4 ; ++i ) { 42 int xx = pos_x[ Head ] + dx[ i ] ; 43 int yy = pos_y[ Head ] + dy[ i ] ; 44 if ( xx > 0 && xx <= n && yy >= 0 && yy <= m && ( mp[ xx ][ yy ] == '.' || mp[ xx ][ yy ] == '*' ) ) { 45 step[ ++ Tail ] = step[ Head ] + 1 ; 46 mp[ xx ][ yy ] = '#' ; 47 pos_x [ Tail ] = xx ; 48 pos_y [ Tail ] = yy ; 49 if ( xx == des_x && yy == des_y ) { 50 Get_Target = true ; 51 printf ( "%d\n" , step[ Tail ] ) ; 52 } 53 } 54 } 55 } 56 if ( !Get_Target ) { printf ( "-1\n" ) ; } 57 } 58 59 int main ( ) { 60 int N , M ; 61 scanf ( "%d%d" , &N , &M ) ; 62 Scan ( N , M ) ; 63 BFS ( N , M ); 64 }
View Code
2016-10-19 21:00:26
转载于:https://www.cnblogs.com/shadowland/p/5978710.html
NOI 题库 6264相关推荐
- NOI题库2.5 6264 走出迷宫
描述 当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单. 假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路. 输入 第一行 ...
- NOI题库 python题解-2022.01.07整理(1.4-1.7)
python && C++ NOI编程题解1.4 https://blog.csdn.net/yigezzchengxuyuan/article/details/86651658 ht ...
- NOI题库 python题解-2022.01.07整理(1.1-1.3)
python && C++ NOI编程题解1.1 https://blog.csdn.net/yigezzchengxuyuan/article/details/86582640 ht ...
- NOI题库 7654 等差数列末项计算
http://noi.openjudge.cn/math/7654/ /* NOI题库 7654 等差数列末项计算 http://noi.openjudge.cn/math/7654/ */ #inc ...
- python刷题 NOI题库 python题解 洛谷、牛客网、AcWing 刷题等
NOI题库 python题解-2022.01.07整理(1.1-1.3) NOI题库 python题解-2022.01.07整理(1.1-1.3)_dllglvzhenfeng的博客-CSDN博客 N ...
- OpenJudge NOI题库 1.7 编程基础之字符串
OpenJudge NOI题库 1.7 编程基础之字符串 OpenJudge - OpenJudge - 题目 1.7_01统计数字字符个数 1.7_01统计数字字符个数_哔哩哔哩_bilibili ...
- OpenJudge NOI题库 1.1 编程基础之输入输出
OpenJudge NOI题库 1.1编程基础之输入输出 OpenJudge - OpenJudge - 题目 1.1_01:Hello, World!_2017-03-19(C++语言) 1.1_0 ...
- NOI题库刷题日志 (贪心篇题解)
这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个平面上,如果有两个点( ...
- OpenJudge NOI题库 1.4 编程基础之逻辑表达式与条件分支
OpenJudge NOI题库 1.4 编程基础之逻辑表达式与条件分支 OpenJudge - OpenJudge - 题目 啊哈C语言 第11讲 4.1.4_01判断数正负 啊哈C语言 第11讲 4 ...
最新文章
- 【控制】《多智能体机器人系统信息融合与协调》范波老师-第6章-基于分布式强化学习的多 Agent 协调方法
- HashSet源码解析
- eclipse java 运行快捷键_java – 可以使用Eclipse中的键盘快捷方式启动/停止Tomcat吗?...
- eclipse导入远程库的git项目
- python的os模块使用_Python之os模块的常见用法
- 虚拟机上的linux作为服务器吗,linux ftp服务器 虚拟机做服务器如何实现
- 20年薪水的经典忠告
- NOI训练行动路线图
- 在html中写python代码的语法和特点-----基于webpy的httpserver
- 解决dephi使用Word时出现“没有注册接口”的情况。
- 服务器2003ftp站点向导,Windows 2003 ftp 配置
- 彩色图像与二通道的灰色图像combine
- ajax jsonp跨域访问,jquery ajax怎么使用jsonp跨域访问
- 【面试宝典】Java八股文之多线程并发面试题
- Fuzzy set基本介绍(1)
- 美团外卖红包个人CPS H5推广链接和小程序码,小程序跳转路径的获取方法
- 手摸手写一个互联网黑话生成器
- 微信公众号怎么为用户提供文件下载功能
- lvgl 8 中文内置字库配置
- 问题 C: Fraction 分数类 I
热门文章
- python打印对象地址_Python打印对象的全部属性
- cisco 模拟器安装及交换机的基本配置实验心得_网络工程师的Python之路 -- 自动监测网络配置变化...
- 转发表是什么鬼?怎么工作?
- HAUT校赛--最大奇子段和
- js中WINDOW对象中的location成员对象
- OPNET网络仿真分析-1.1.3、OPNET Modeler
- matlab2c使用c++实现matlab函数系列教程-acos函数
- python时间库date和datetime
- 简单小知识 记录一下 慢慢更新积累
- ubuntu18.04 本地源制作