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

K0006. 魔法塔的全视之眼

中等通过率 70% · 提交 159 · 通过 112
枚举模拟字符串矩阵

在一片神秘的二维地图上,小慕正在指挥一座 魔法塔 来守护这片区域。地图上的每个格子可能是以下之一: - `A`:魔法塔的位置,负责守护该区域。 - `B`:魔法屏障,会阻挡魔法塔的视线。 - `C`:旅人,需要魔法塔的保护。 - `.`:空地,没有任何目标或阻挡。 魔法塔的监控规则: 1. 魔法塔的视线可以穿过 旅人 (`C`),继续观察到其后方的目标。 2. 魔法屏障 (`B`) 会完全阻挡魔法塔的视线,其后的目标无法被监控。 3. 。 小慕需要找到能够监控到最多旅人的魔法塔,并计算该魔法塔能监控到的旅人数。

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

输入描述

前两行分别输入两个整数 `m` 和 `n`,表示地图的行数和列数,满足 `1 ≤ m, n ≤ 100`。 接下来输入 `m` 行,每行包含一个长度为 `n` 的字符串,表示地图 `magicMap` 的布局: - 每个字符为以下之一:`A`、`B`、`C` 或 `.`,且字符间无空格。

输出描述

输出一个整数,表示能够监控到最多旅人的魔法塔的旅人数。如果地图上没有魔法塔 `A`,输出 `0`。

示例

示例 1

输入

5
5
ACC.B
.C..C
A.BCA
....B
CCA..

输出

3

说明:- 第一行的魔法塔 `A` 可以监控到 3 个旅人。 - 第三行的左侧魔法塔 `A` 可以监控到 2 个旅人。 - 第三行的右侧魔法塔 `A` 可以监控到 2 个旅人。

示例 2

输入

5
5
A....
.B.C.
AC.BA
.....
CCA..

输出

2

示例 3

输入

4
4
.B..
BCBC
CB.A
....

输出

1

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

看不懂题目?点开图解
魔法塔视线示例(5×5地图) A C C . B . C . . C A . B C A . . . . B C C A . . 视线 被阻挡 视线 A 魔法塔 B 屏障 C 旅人 . 空地 视线 第一行A向右看到2个C, 然后被B阻挡; 向下看到1个C,共3个。
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「魔法塔的全视之眼」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。