万卷网 > 题目详情
题型:编程题

拯救公主

多灾多难的公主又被大魔王抓走啦!国王派遣了第一勇士阿福去拯救她。

    身为超级厉害的术士,同时也是阿福的好伙伴,你决定祝他一臂之力。你为阿福提供了一张大魔王根据地的地图,上面标记了阿福和公主所在的位置,以及一些不能够踏入的禁区。你还贴心地为阿福制造了一些传送门,通过一个传送门可以瞬间转移到任意一个传送门,当然阿福也可以选择不通过传送门瞬移。传送门的位置也被标记在了地图上。此外,你还查探到公主所在的地方被设下了结界,需要集齐K种宝石才能打开。当然,你在地图上也标记出了不同宝石所在的位置。

    你希望阿福能够带着公主早日凯旋。于是在阿福出发之前,你还需要为阿福计算出他最快救出公主的时间。

    地图用一个R×C的字符矩阵来表示。字符S表示阿福所在的位置,字符E表示公主所在的位置,字符#表示不能踏入的禁区,字符$表示传送门,字符.表示该位置安全,数字字符0至4表示了宝石的类型。阿福每次可以从当前的位置走到他上下左右四个方向上的任意一个位置,但不能走出地图边界。阿福每走一步需要花费1个单位时间,从一个传送门到达另一个传送门不需要花费时间。当阿福走到宝石所在的位置时,就视为得到了该宝石,不需要花费额外时间。

时间限制:1000

内存限制:65536

输入

第一行是一个正整数T(1 <= T <= 10),表示一共有T组数据。 每一组数据的第一行包含了三个用空格分开的正整数R、C(2 <= R, C <= 200)和K,表示地图是一个R×C的矩阵,而阿福需要集齐K种宝石才能够打开拘禁公主的结界。 接下来的R行描述了地图的具体内容,每一行包含了C个字符。字符含义如题目描述中所述。保证有且仅有一个S和E。$的数量不超过10个。宝石的类型在数字0至4范围内,即不会超过5种宝石。

输出

对于每一组数据,输出阿福救出公主所花费的最少单位时间。若阿福无法救出公主,则输出“oop!”(只输出引号里面的内容,不输出引号)。每组数据的输出结果占一行。


样例输入

1
7 8 2
........
..S..#0.
.##..1..
.0#.....
...1#...
...##E..
...1....

样例输出

11
更新时间:2023-04-14 18:12:36 |
【知识点】 电子学会C/C++七级

相似题推荐

单选题

一棵有1000个节点的完全二叉树,其深度为(根节点深度为1)?( )

A.

 9

B.

 10

C.

 11

D.

 12

2026-07-26
单选题

欧拉函数φ(12)的值是?( )

A.

 2

B.

 4

C.

 6

D.

 8

2026-07-26
判断题

最长公共子序列问题只能用动态规划求解,无法用其他方法。( )

A.正确 B.错误
2026-07-26
编程题

专属教室

题目描述

在一所学校中,有 N 个班级,每个班级都有一间专属的教室。第 i 个班级当前使用的教室编号为 Si,但学校计划将其调整到新的教室 Ti。

已知所有班级当前使用的教室编号互不相同,所有班级希望更换到的教室编号也互不相同。每个班级只能更换一次教室,且一次只能安排一个班级进行更换。在更换时,目标教室必须是空闲的。

学校希望找到一个合理的更换顺序,使得所有班级都能顺利迁入目标教室。请判断是否可能。

输入格式

第一行一个整数 N。

接下来 N 行,每行两个字符串 Si 和 Ti,表示第 i 个班级当前所在的教室编号和希望迁入的教室编号。

输出格式

如果存在一种顺序使得所有班级都能完成更换,输出 Yes,否则输出 No。

输入样例#1

2
b m
m d

输出样例#1

Yes

输入样例#2

3
a b
b c
c a

输出样例#2

No

说明提示

1≤N≤105

Si,Ti 为由小写英文字母组成的字符串,长度在 1 到 8 之间。

Si≠Ti

所有 Si 互不相同。

所有 Ti 互不相同。

限制

时间限制:1000ms

内存限制:256MiB


2026-07-26
单选题

Dijkstra算法用于求解以下哪个问题?( )

A.

 单源最短路径

B.

 多源最短路径

C.

 最小生成树

D.

 拓扑排序

2026-07-26
公众号
客服 反馈
顶部