华为 OD 机试【4 大宝典】再次上新题!
① Python 解华为机试题 :https://dream.blog.csdn.net/article/details/129221789
② C++ 解华为机试题:https://dream.blog.csdn.net/article/details/129472919
③ Java 解华为机试题:https://dream.blog.csdn.net/article/details/129652513
④ C 解华为机试题:https://dream.blog.csdn.net/article/details/129658432
本篇华为机试题解:查找单入口空闲区域
题目
给定一个 m×n 的矩阵,由若干字符 X
和 O
构成, X
表示该处已被占据,O
表示该处空闲,请找到最大的单入口空闲区域。
空闲区域是由连通的O
组成的区域,位于边界的O
可以构成入口, 单入口空闲区域即有且只有一个位于边界的O
作为入口的由连通的O
组成的区域。 如果两个元素在水平或垂直方向相邻,则称它们是“连通”的。
输入
第一行输入为两个数字,
- 第一个数字为行数 m,
- 第二个数字列数 n,两个数字以空格分隔, 1≤m,n≤200
剩余各行为矩阵各行元素,元素为X
或 O
,各元素间以空格分隔。
输出
若有唯一符合要求的最大单入口空闲区域,输出三个数字,
- 第一个数字为入口行坐标(范围为 0~行数-1),
- 第二个数字为入口列坐标(范围为 0~列数-1),
- 第三个数字为区域大小,三个数字以空格分隔;
若有多个符合要求的最大单入口空闲区域,输出一个数字,代表区域的大小; 若没有,输出NULL
。