最新华为OD机试
2025华为od 机试2025B卷-华为机考OD2025年B卷
题目描述
给定一个 m x n 的矩阵,由若干字符 ‘X’ 和 ‘O’构成,’X’表示该处已被占据,’O’表示该处空闲,请找到最大的单入口空闲区域。
解释:
空闲区域是由连通的’O’组成的区域,位于边界的’O’可以构成入口,
单入口空闲区域即有且只有一个位于边界的’O’作为入口的由连通的’O’组成的区域。
如果两个元素在水平或垂直方向相邻,则称它们是“连通”的。
输入描述
第一行输入为两个数字,第一个数字为行数m,第二个数字为列数n,两个数字以空格分隔,1<=m,n<=200。
剩余各行为矩阵各行元素,元素为‘X’或‘O’,各元素间以空格分隔。
输出描述
若有唯一符合要求的最大单入口空闲区域,输出三个数字
- 第一个数字为入口行坐标(0~m-1)
- 第二个数字为入口列坐标(0~n-1)
- 第三个数字为区域大小
三个数字以空格分隔;
若有多个符合要求,则输出区域大小最大的,若多个符合要求的单入口区域的区域大小相同,则此时只需要输出区域大小,不需要输出入口坐标。
若没有,输出NULL。
示例1
输入
4 4
X X X X
X O O X
X O O X
X O X X
输出
3 1 5
说明
存在最大单入口区域,入口坐标(3,1),区域大小5
示例2
输入
4 5
X X X X X
O O O O X
X O O O X
X O X X O
输出
3 4 1
说明
存在最大单入口区域,入口坐标(3,4),区域大小1
示例3
输入
5 4
X X X X
X O O O
X O O O
X O O X
X X X X
输出
NULL
说明
NULL
示例4
输入
5 4
X X X X
X O O O
X X X X
X O O O
X X X X
输出
3
说明
存在两个大小为3的最大单入口区域,两个入口坐标分别为(1,3)、(3,3)
解题思路
题目解析
本题的目标是找到一个矩阵中由字符 'O'
连通组成的最大的 单入口空闲区域,并根据具体情况输出不同的信息。
核心概念
-
空闲区域:
- 由
'O'
连通组成的区域。 - 连通:水平或垂直方向相邻的
'O'
视为连通。
- 由
-
入口:
- 位于矩阵边界的
'O'
元素可作为入口。
- 位于矩阵边界的
-
单入口空闲区域:
- 一个空闲区域中仅有 一个
'O'
位于边界。 - 例如,若一个空闲区域有多个边界上的
'O'
- 一个空闲区域中仅有 一个