刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

打怪救公主
公主被魔王抓起来关在了迷宫的某处,骑士想要拯救公主,也进入了迷宫。

但是魔王不会轻易让骑士拯救公主,魔王在迷宫中安排了许多怪兽。

每个怪兽都有血量,骑士也有初始血量,骑士打败怪兽后血量的减少量为怪物的血量值,血量减到0,骑士会死去。

迷宫由m*n个方块组成,每个方块有墙或者路或者怪物,骑士在其中一个方块上,他每个时间单位可以四个方向(上、下、左、右)走到相邻方格,若遇到怪物,必须打败怪物才能继续前进。

请帮忙判断骑士能否成功拯救公主,如果能,给出骑士还剩的最大血量
时间限制:1000
内存限制:65536
输入
第一行为三个整数m、n和t,t表示骑士的初始血量。(m,n <= 20, t <= 30) 第2至m+1行描述了迷宫,迷宫以m行n列的方格组成,若方格为".“则表示骑士可以通过,若方格为”#“则表示墙,骑士不能通过,若方格为数字则表示怪物,数字为怪物的血量,保证怪物的血量小于10(一位数)。”*“表示了骑士当前所在的位置,”+"表示公主被囚禁的位置。
输出
若骑士能成功拯救公主,则输出骑士走到公主所囚禁方格所剩最大血量,否则输出0。
样例输入

5 6 10
..*...
.#2###
5#..4#
.##9.#
.#+..#

样例输出

4

使用微信搜索喵呜刷题,轻松应对考试!

答案:

解析:

【喵呜刷题小喵解析】这个问题是一个典型的图搜索问题,可以使用广度优先搜索(BFS)来解决。首先,我们需要读取迷宫地图,并确定骑士和公主的位置。然后,我们可以使用BFS来搜索从骑士到公主的路径。在BFS过程中,我们需要维护一个队列来保存待搜索的节点,以及一个visited数组来记录已经访问过的节点。对于每个节点,我们需要检查它是否已经被访问过,如果是,则跳过。然后,我们需要检查它是否是公主的位置,如果是,则返回True。如果骑士的血量已经减少到0,则返回False。对于每个节点的相邻节点,我们需要检查它是否可以被访问。如果它是一个墙,则跳过。如果它是一个怪物,则我们需要判断骑士是否有足够的血量来打败它。如果骑士的血量足够,并且从该节点到公主的路径存在,则返回True。最后,如果骑士能够成功到达公主的位置,我们输出骑士的血量。否则,我们输出0。
创作类型:
原创

本文链接:打怪救公主 公主被魔王抓起来关在了迷宫的某处,骑士想要拯救公主,也进入了迷宫。 但是魔王不会轻易让骑

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share