`
weimou66
  • 浏览: 1254418 次
文章分类
社区版块
存档分类
最新评论

HDU-1728 逃离迷宫 解题报告

 
阅读更多

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


题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1728

解法类型:BFS

解题思路:开始我是用优先队列做的,结果直接悲剧,不是TLE就是MLE,反正是交了很多次!优先队列,入队列的情况太多了,因为如果遇到经过的路径,如果记录的最小转弯数与当前的相等也要入队列,这样就盲搜了很多不必要的路径。后来果断放弃了优先队列的做法,采用从一条路直接搜到底的做法,并记录当前的搜索方向,这样就方便多了。

算法实现:




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics