XJOI 3585 The rescue plan 营救计划 题解

这是一篇关于XJOI 3585题目的题解,主要介绍了如何利用广度优先搜索(BFS)策略在迷宫中寻找救援萌新的最短路径。在迷宫中,障碍物、空地、守卫和萌新位置都有特定符号表示。解题关键在于理解如何处理打败守卫的时间成本,并通过BFS找到最优解。
摘要由CSDN通过智能技术生成

英文

Time Limit:1s Memory Limit:256M

Description

Given a n*m map.A “Mengxin” is trapped.You are the one to rescue him.In the map,there are some guards,you must defeat the guards to get your way.Defeat one guard takes 1 min,move one step takes 1 min,each step you can only take one of 4 directions(up,down,left,right).Please tell us the least time you cost to rescue the guy.

Input

The first line contains two integers n,m
The next n lines,each line input m characters represent the map. 1<=n,m<=200
‘@’ is your position
‘#’ is obstacle
‘.’ means there is a way you can go
‘G’ means guard
‘M’ means the position of “Mengxin”.

Output

If you can save this guy,output the least time you cost,else,output “You can’t save Mengxin”

Sample Input1

7 8 
#.#####. 
#.M#..@. 
#..#G... 
..#..#.# 
#...##.. 
.#...... 
........

Sample Output1

13

Sample Input2

2 2
M.
G@

​Sample Output2

2

中文

时间:1s 空间:128M

题目描述:

在一个n∗m的迷宫里,有一个萌新被困住了,你作为一个久经码场的战士,决定去营救萌新。地图中还会有一些守卫,你必须打败守卫才能通过守卫所在的位置,打败守卫需要花费1分钟,移动一步需要花费一分钟,每次你只能往上下左右某个方向移动一步。问你最少需要花费多少时间才能救到萌新。

输入格式:

第一行输入两个整数 n,m
接下来n行每行输入m个字符
‘#’代表障碍物,无法直接通过
‘.’代表空地,可以直接通过
‘G’代表守卫,你需要打败他才能通过
‘M’代表萌新所在的位置
‘@’表示你所在的位置

输出格式:

如果可以营救到萌新,就输出最少需要花费的分钟数
如果不可以,输出“You can’t save Mengxin”

样例输入1:

7 8 
#.#####. 
#.M#..@. 
#..#G... 
..#..#.# 
#...##.. 
.#...... 
........

样例输出1:

13

样例输入2:

2 2
M.
G@

样例输出2:

2

约定:

1<=n,m<=200

注意:

以上输入样例中,用到的代码片不是代码,只是为了方便表示,谢谢。

提示:

这道题求的是最优解,很容易就想到广度优先搜索(又称宽度优先搜,BFS),最先在队列里遇到的答案一定就是最

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值