AlgoMooc
← 返回题库

K0056. 魔法森林中的符号路径

困难通过率 33% · 提交 114 · 通过 38
DFS字符串回溯

小慕正在开发一个魔法符文解析系统。系统中的符文以树状结构组织,每个节点用一个字母表示。小慕需要根据给定的目标符文序列,从根节点出发,找到所有到达叶子节点的路径中,能够匹配目标序列的最短路径。 树的结构由节点和层次关系组成,层次深度通过“|-”的数量表示。对于从根到叶子的某条路径,其连续节点构成的序列称为该路径的。例如,路径 `[D, A, B, C, G]` 可以提取出子路径 `[A, B, C, G]`,但 `[B, G, C]` 不是有效的子路径。 对于某个子路径,如果从中移除 n 个元素(n >= 0),且不改变剩余元素的相对顺序后,得到的新序列与目标序列完全相同,则称该子路径与目标序列匹配。 如果存在多条最短路径,小慕需要选择的那条;如果没有路径满足要求,则返回空路径 `NULL`。

提示:带虚线的词点一下有通俗解释。

输入描述

- 第一行输入一个整数 `n`,表示森林结构的深度优先遍历中的行数。 - 接下来的 `n` 行表示森林的结构(深度优先遍历的表示方式)。每一行中的节点由大写字母组成,层次关系用“|-”的数量表示。 - 最后一行输入目标路径,目标路径由大写字母组成,且长度不超过20。

输出描述

输出符合条件的最短路径(字典序最小)。如果找不到符合条件的路径,输出一个字符串`null`。

示例

示例 1

输入

9
D
|-A
|-|-B
|-|-|-C
|-|-|-|-G
|-|-|-|-|-F
|-|-C
|-|-|-A
|-|-|-|-G
ACG

输出

ABCG

示例 2

输入

16
Z
|-Z
|-|-D
|-|-|-B
|-|-|-|-Z
|-|-|-|-|-A
|-|-|-|-|-|-B
|-|-|-|-|-|-|-Z
|-|-|-|-|-|-|-|-C
|-|-|-|-|-|-|-|-|-B
|-A
|-|-A
|-|-|-B
|-|-|-|-C
|-|-|-|-|-D
|-|-|-|-|-|-B
ZBB

输出

ZABZCB

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。