#106. 视线所及之处

视线所及之处

视线所及之处

题目描述

给定一个由障碍和空地组成的网格,网格共有 H 行、W 列。记第 i 行第 j 列的方格为 (i, j)。
若两个方格位于同一行或同一列,且连接它们的所有方格(包含两端点)中不存在障碍(即均为 .),则称其中一个方格对另一个方格是可见的。

给定一个起点方格 (X, Y),保证该方格不含障碍,求从 (X, Y) 出发在同一行或列能看见的方格总数(包含 (X, Y) 自身)。

直观理解:将一盏“探照灯”放在 (X, Y) 处,沿上/下/左/右四个方向照射,遇到障碍 # 即停止;被照到的所有方格(含起点)记为可见。

输入格式

  • 第一行包含四个整数:H W X Y
  • 接下来 H 行,每行一个长度为 W 的由 .# 组成的字符串 S_i
    • . 表示空地;
    • # 表示障碍。

输出格式

输出一个整数,表示从 (X, Y)(包含自身)可见的方格数量。

数据范围与保证

  • 1 ≤ H, W ≤ 100
  • 1 ≤ X ≤ H
  • 1 ≤ Y ≤ W
  • 每个 S_i 的长度为 W
  • (X, Y) 处为 .

样例

输入:

4 5 2 3
.#...
.....
#.#..
....#

输出:

6

解释:第 2 行无障碍,整行 5 个格子可见;第 3 列向上可见到 (1,3),向下被 (3,3) 的障碍阻挡,因此额外 1 个;合计 6 个。