#OD025. 机器人活动区域

机器人活动区域

题目解析和算法源码

华为OD机试 - 机器人活动区域(Java & JS & Python & C & C++)_伏城之外的博客-CSDN博客

题目描述

现有一个机器人,可放置于 M × N 的网格中任意位置,每个网格包含一个非负整数编号,当相邻网格的数字编号差值的绝对值小于等于 1 时,机器人可以在网格间移动。

问题: 求机器人可活动的最大范围对应的网格点数目。

​说明:​

  1. 网格左上角坐标为 (0,0) ,右下角坐标为(m−1,n−1)
  2. 机器人只能在相邻网格间上下左右移动

示例1 输入如下网格

输出:6

说明:图中绿色区域,相邻网格差值绝对值都小于等于1,且为最大区域,对应网格点数目为6


示例2 输入如下网格

输出:1

说明:任意两个相邻网格的差值绝对值都大于1,机器人不能在网格间移动,只能在单个网格内活动,对应网格点数目为1

输入描述

第 1 行输入为 M 和 N

  • M 表示网格的行数
  • N 表示网格的列数

之后 M 行表示网格数值,每行 N 个数值(数值大小用 k 表示),数值间用单个空格分隔,行首行尾无多余空格。

  • M、 N、 k 均为整数
  • 1 ≤ M,N ≤ 150
  • 0 ≤ k ≤ 50

输出描述

输出 1 行,包含 1 个数字,表示最大活动区域的网格点数目,

行首行尾无多余空格。

用例1

输入

4 4
1 2 5 2
2 4 4 5
3 5 7 1
4 6 2 4

输出

6

说明

见描述中示例1,最大区域对应网格点数目为6

用例1

输入

2 3
1 3 5
4 1 3

输出

1

说明

见描述中示例2,最大区域对应网格点数目为1