题目链接

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

小Hi被坏女巫抓进里一间有N x M个格子组成的矩阵迷宫。

有些格子是小Hi可以经过的,我们用'.'表示;有些格子上有障碍物小Hi不能经过,我们用'#'表示。小Hi的起始位置用'S'表示,他需要到达用'T'表示的格子才能逃离迷宫。

麻烦的是小Hi被坏女巫施了魔法,他只能选择上下左右某一个方向,沿着这个方向一直走,直到遇到障碍物或者迷宫边界才能改变方向。新的方向可以是上下左右四个方向之一。之后他还是只能沿着新的方向一直走直到再次遇到障碍物或者迷宫边界……

小Hi想知道他最少改变几次方向才能逃离这个迷宫。

输入

第一行包含两个整数N和M。  (1 <= N, M <= 500)

以下N行每行M个字符,代表迷宫。

输出

一个整数代表答案。如果小Hi没法逃离迷宫,输出-1。

样例输入
5 5
S.#.T
.....
.....
.....
.....
样例输出
2

题目有个地方感觉很坑,就是没有真正告诉过你路过也可以算到达终点,反而题目中 “直到遇到障碍物或者迷宫边界才能改变方向” 误导性可以说是非常坏坏了。BFS。

ac代码:

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<vector>
#include<set>
#include<algorithm>
#include<queue> using namespace std; const int maxn = ;
char map[maxn][maxn];
bool visit[maxn][maxn];
int dir[][] = { ,,,-,,,-, };
int res;
int n, m; struct node {
int i;
int j;
int cnt;
node(){}
node(int ii, int jj, int c) : i(ii), j(jj), cnt(c) {};
};
queue<node> q;
int findway(node s) //bfs
{
visit[s.i][s.j] = true;
q.push(s); while (!q.empty())
{
node f = q.front();
q.pop(); for (int i = ; i < ; i++) {
int nexti = f.i + dir[i][];
int nextj = f.j + dir[i][]; while (map[nexti][nextj] != '#'&&nexti >= && nexti < n&&nextj >= && nextj < m)
{
if (map[nexti][nextj] == 'T')
return f.cnt+;
nexti += dir[i][];
nextj += dir[i][];
}
nexti -= dir[i][];
nextj -= dir[i][];
if (visit[nexti][nextj] == false)
{
node nextnode = node(nexti, nextj, f.cnt + );
visit[nexti][nextj] = true;
q.push(nextnode);
}
}
}
return -;
} int main()
{
memset(map, '', sizeof(map));
memset(visit, false, sizeof(visit));
cin >> n >> m;
node s;
int si, sj;
for (int i = ;i < n;i++)
for (int j = ;j < m;j++) {
cin >> map[i][j];
if (map[i][j] == 'S')
{
visit[i][j] = true;
s.i = i;
s.j = j;
s.cnt = -;
}
}
cout << findway(s) << endl;
return ;
}

hihocoder 1519 : 逃离迷宫II的更多相关文章

  1. 【hihocoder 1519】 逃离迷宫II

    [题目链接]:http://hihocoder.com/problemset/problem/1519?sid=1098756 [题意] Chinese [题解] bfs题; 根据bfs的性质; 第一 ...

  2. 【HIHOCODER 1599】逃离迷宫4

    描述 小Hi被坏女巫抓进一座由无限多个格子组成的矩阵迷宫. 小Hi一开始处于迷宫(x, y)的位置,迷宫的出口在(a, b).小Hi发现迷宫被女巫施加了魔法,假设当前他处在(x, y)的位置,那么他只 ...

  3. HDU 1728 逃离迷宫(DFS经典题,比赛手残写废题)

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  4. hdu 1728:逃离迷宫(DFS,剪枝)

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  5. HDU 1728:逃离迷宫(BFS)

    http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Problem Description   给定一个m × n (m行, n列)的迷宫,迷宫中有 ...

  6. hdoj 1728 逃离迷宫

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. 逃离迷宫(HDU 1728 BFS)

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. hdu 4524 郑厂长系列故事——逃离迷宫 小水题

    郑厂长系列故事——逃离迷宫 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) To ...

  9. HDU 1728 逃离迷宫(DFS||BFS)

    逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可 ...

随机推荐

  1. C++之C/C++内存对齐

    一.什么是字节对齐,为什么要对齐 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这 ...

  2. ProxySQL 监控和统计

    ProxySQL 监控和统计 很多有价值的统计数据在stats和monitor库中. admin@127.0.0.1 [(none)]>SHOW TABLES FROM stats; +---- ...

  3. python使用requests模块模拟登陆知乎

    from bs4 import BeautifulSoup import requests import time def captcha(captcha_data): with open(" ...

  4. Vue.js写一个SPA登录页面的过程

    技术栈 vue.js 主框架 vuex 状态管理 vue-router 路由管理 一般过程 在一般的登录过程中,一种前端方案是: 检查状态:进入页面时或者路由变化时检查是否有登录状态(保存在cooki ...

  5. Netty并发优化之ExecutionHandler

    上文<Netty框架入门>说到:如果业务处理handler耗时长,将严重影响可支持的并发数. 针对这一问题,经过学习,发现了可以使用ExecutionHandler来优化. 先来回顾一下没 ...

  6. ASCII-->Ansi-->Unicode-->UTF8 关于编码 自己的总结

    各种不同的编码 无非就是效率 最大化. 我猜测编码的进化流程: ASCII(American Standard Code for Information Interchange)----满足了美国和西 ...

  7. 删除/添加/调用WordPress用户个人资料的联系信息

    如果你要折腾主题或者将WordPress站点开放注册,你可能需要自定义WordPress用户个人资料信息.下面倡萌将简单说一下如何删除.添加和调用自定义用户信息字段. 添加或删除字段,可以在主题的 f ...

  8. TeX Live & TeXstudio 安装手记

    数据库课上又看到了那位用 beamer 做 slides 的师兄,想到自己一拖再拖的LaTeX入门,决定赶快动手装个环境再说~在经过一番搜索和研究之后决定先在 windows 底下试用,选择 TeX ...

  9. css让元素不可点击 pointer-events: none;

    张鑫旭大神:http://www.zhangxinxu.com/wordpress/2011/12/css3-pointer-events-none-javascript/ 我们知道form元素里的  ...

  10. 【51nod】1244 莫比乌斯函数之和

    题解 求积性函数的前缀和?杜教筛! 这不给一发杜教筛入门必备之博客= = https://blog.csdn.net/skywalkert/article/details/50500009 好了,然后 ...