逃离迷宫

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 16840    Accepted Submission(s): 4108
Problem Description
给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,gloria不能走到迷宫外面去。令人头痛的是,gloria是个没什么方向感的人,因此,她在行走过程中,不能转太多弯了,否则她会晕倒的。我们假定给定的两个位置都是空地,初始时,gloria所面向的方向未定,她可以选择4个方向的任何一个出发,而不算成一次转弯。gloria能从一个位置走到另外一个位置吗?
Input
第1行为一个整数t (1 ≤ t ≤ 100),表示测试数据的个数,接下来为t组测试数据,每组测试数据中,
  第1行为两个整数m, n (1 ≤ m, n ≤ 100),分别表示迷宫的行数和列数,接下来m行,每行包括n个字符,其中字符'.'表示该位置为空地,字符'*'表示该位置为障碍,输入数据中只有这两种字符,每组测试数据的最后一行为5个整数k, x1, y1, x2, y2 (1 ≤ k ≤ 10, 1 ≤ x1, x2 ≤ n, 1 ≤ y1, y2 ≤ m),其中k表示gloria最多能转的弯数,(x1, y1), (x2, y2)表示两个位置,其中x1,x2对应列,y1, y2对应行。
Output
每组测试数据对应为一行,若gloria能从一个位置走到另外一个位置,输出“yes”,否则输出“no”。
Sample Input
2 5 5 ...** *.**. ..... ..... *.... 1 1 1 1 3 5 5 ...** *.**. ..... ..... *.... 2 1 1 1 3
Sample Output
no yes
#include <stdio.h>
#include <string.h>#define maxn 105
const int dir[][2] = {0, 1, 0, -1, 1, 0, -1, 0};struct Node {int x, y, step;
} que[maxn * maxn]; // 点不能重复入队,但能重复走
int M, N, K, X, Y; // M rows
char G[maxn][maxn];bool check(int x, int y) {return x >= 1 && x <= M && y >= 1 && y <= N && G[x][y] != '*';
}bool BFS(int x0, int y0) {Node u, v;int front = 0, back = 0, i;G[x0][y0] = '*';u.x = x0; u.y = y0; u.step = -1;que[back++] = u;while (front != back) {u = que[front++];if (u.x == X && u.y == Y) return true;if (u.step == K) continue;for (i = 0; i < 4; ++i) {v = u;++v.step;while (true) {v.x += dir[i][0];v.y += dir[i][1];if (!check(v.x, v.y)) break;if (G[v.x][v.y] == '.') que[back++] = v;G[v.x][v.y] = '@'; // mark}}}return false;
} int main() {// freopen("stdin.txt", "r", stdin);int x0, y0, T, i;scanf("%d", &T);while (T--) {scanf("%d%d", &M, &N);for (i = 1; i <= M; ++i)scanf("%s", G[i] + 1);scanf("%d%d%d%d%d", &K, &y0, &x0, &Y, &X);puts(BFS(x0, y0) ? "yes" : "no");}return 0;
}

HDU1728 逃离迷宫 【BFS】相关推荐

  1. hdu 1728 逃离迷宫 (bfs)

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

  2. hdu_1728_逃离迷宫(bfs)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1728 题意:走迷宫,找最小的拐角 题解:对BFS有了新的理解,DFS+剪枝应该也能过,用BFS就要以拐 ...

  3. HDU - 1728 逃离迷宫(bfs)

    题目链接:点击查看 题目大意:给出起点和终点和最多的拐弯次数k,问拐弯次数能否在小于等于k的情况下从起点到达终点 题目分析:bfs,不过和以往的不太一样,以往的bfs都是每次加入一个点,而这个题目的限 ...

  4. 逃离迷宫 ( BFS /DFS)

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

  5. hdoj 1728 逃离迷宫

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

  6. 逃离迷宫的路径(打印路径)

    题目描述 现在有一个5*5的迷宫,起点在左上角,终点在右下角,现在请你来写一个程序计算一下,LZY从起点开始走迷宫,最终能否成功的逃离迷宫? 如果LZY可以逃出迷宫,请输出逃离迷宫的最短路径,否则输出 ...

  7. hdu 4524 郑厂长系列故事——逃离迷宫

    点击打开链接 郑厂长系列故事--逃离迷宫                                                                               T ...

  8. 郑厂长系列故事——逃离迷宫(C语言)

    郑厂长没变 还是那个假厂长真码农改变的是业余爱好 他现在不研究象棋,改玩游戏了! 最近,郑厂长爱上了逃离迷宫这个游戏,他日日夜夜的玩,就是想达到自己的目标:1000万,因为这个数字和他在腾讯的年收入一 ...

  9. 杭电4524-郑厂长系列故事——逃离迷宫

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

  10. 献给阿尔吉侬的花束(二刷,迷宫bfs,模板题)

    文章目录 Question Ideas Code Question 阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫. 今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终 ...

最新文章

  1. Mybatis【配置文件】就是这么简单
  2. 带你学python基础:元祖tuple和字典dictionary
  3. python 将布尔数组取反的方法 True False(b=(a==False))
  4. Swagger-概述
  5. linux 截取后缀名,Shell 截取文件名和后缀
  6. boost::mp11::mp_none_of_q相关用法的测试程序
  7. redis集群的三种模式
  8. ASP.NET2.0_多语言本地化应用程序
  9. bind搭建(二)反向解析
  10. 组建一个局域网一般会用到哪些设备_路由器和交换机的区别是什么?在实际使用中有哪些不同...
  11. jsp中redirect和forward的区别
  12. app接口服务器请求为什么会报错307_Vue接口代理和数据Mock,你会了吗
  13. fiddler之数据统计(statistics)
  14. 研究员公开Razer 0day,插入鼠标即可获得Windows管理员权限
  15. python list中分段_python将list中的元素拼接为一个str
  16. 手写笔记软件评测Notability、GoodNotes、MarginNote、OneNote
  17. cisco思科模拟器中断translating域名翻译快捷键
  18. python3 ZIP文件密码破解
  19. 杭州逆行崩溃小伙首度回应
  20. 深入理解Java虚拟机 4.JVM垃圾回收机制详解

热门文章

  1. 怎样把word文档生成二维码?word如何制作二维码?
  2. 基于stm32单片机语音LD3320控制直流电机智能座椅LCD1602显示人体重量薄膜压力传感器设计
  3. 微信开放平台认证资料填报
  4. Min GW 安装教程(转载)
  5. 面部捕捉技术_新功能要来!苹果收购面部捕捉技术公司Faceshift
  6. 怎么缩小图片大小kb
  7. 路由器和交换机的区别
  8. 怎么彻底卸载cad2017_电脑中cad卸载不干净重装失败的处理方法
  9. Java OCR文字识别(Tess4J)
  10. Employee类的层级结构