ABC274B Line Sensor
题目概述¶
给定一个 $H \times W$ 的网格,每个格子是 .
(空)或 #
(有箱子)。
现在要求你输出每一列中 #
的数量。
解题思路¶
- 网格为 $H$ 行 $W$ 列,按行输入。
- 对每一列 $j$,统计从第 $1$ 行到第 $H$ 行中 $C_{i,j} = \texttt{#}$ 的个数。
- 将每列的统计结果输出,空格隔开。
实现步骤¶
- 可以按列遍历:
- 外层:从列 $j = 1$ 到 $W$。即先写
for (int j = 1; j <= W; j++)
。 - 外层循环里首先初始化 $sum=0$ 准备计数。
- 内层:从行 $i = 1$ 到 $H$。再写
for (int i = 1; i <= H; i++)
。 - 判断:若
C[i][j] == '#'
,则当前列计数加一 - 输出
sum
即可。
时间复杂度¶
- 时间:$O(H \times W)$,需要遍历整个矩阵
- 空间:$O(W)$,保存每列的计数
总结¶
- 本题考查基础的二维数组遍历;
- 虽然数据范围大(最多 $10^6$ 个格子),但因为只是统计字符,不涉及复杂计算,直接遍历即可通过;