AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3804. 找到它

中等通过率 50% · 提交 884 · 通过 440
回溯DFS矩阵字符串

小慕正在玩一个找单词的小游戏,他需要在一个中找到给定的单词。 假设给定单词是HELLOWORLD,只要在矩阵中能按顺序找到HELLOWORLD就算成功。 注意区分英文字母大小写,并且小慕只能上下左右移动,不能走重复的路径。

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

输入描述

<p> 输入第一行包含两个整数N M (0 < N, M < 21) </p> <p> 分别表示N行M列的矩阵 </p> <p> 第二行是长度不超过100的单词W </p> <p> 在整个矩阵中给定单词W只会出现一次 </p> <p> 从第3行到第N+2是只包含大小写英文字母的长度为M的字符串矩阵 </p>

输出描述

<p> 如果能在矩阵中连成给定的单词,则输出给定单词首字母在矩阵中的位置为第几行第几列 </p> <p> 否则输出 NO </p>

示例

示例 1

输入

5 5
HELLOWORLD
CPUCY
EKLQH
CHELL
LROWO
DGRBC

输出

3 2

示例 2

输入

5 5
Helloworld
CPUCh
wolle
orldO
EKLQo
PGRBC

输出

NO

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

看不懂题目?点开图解
双机位A-找到它 图解 C P U C Y E K L Q H C H E L L L R O W O D G R B C 实际坐标:行3对应y=170+25=195,列2对应x=100+25=125,格子左上角(100,170) --> 矩形(100,170,50,50) --> 但行3列2是第3行第2列,即x=100,y=170。 用淡蓝色半透明矩形标记路径上的其他格子。 --> 简化:只画起始格子和几个关键箭头。 --> 用箭头线连接关键格子。 --> 为了不混乱,只画从(3,2)到(3,3)到(3,4)到(3,5)到(4,5)到(4,4)到(4,3)到(4,2)到(4,1)到(5,1)的折线。 --> 用淡橙色半透明填充这些格子。 --> 格子中心坐标: (3,2): (125,195) (3,3): (175,195) (3,4): (225,195) (3,5): (275,195) (4,5): (275,245) (4,4): (225,245) (4,3): (175,245) (4,2): (125,245) (4,1): (75,245) (5,1): (75,295) --> 用折线连接 --> H 单词: HELLOWORLD 起始位置: 第3行第2列 (输出: 3 2)
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「找到它」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。