华为OD机试真题-数值同化-2023年OD统一考试(B卷)

题目描述:

存在一个m*n的二维数组,其成员取值范围为0,1,2。其中值为1的元素具备同化特性,每经过1S,将上下左右值为0的元素同化为1。而值为2的元素,免疫同化。将数组所有成员随机初始化为0或2,再将矩阵的[0,0]元素修改成1,在经过足够长的时间后,求矩阵中有多少个元素是0或2(即0和2数量之和)。

输入描述:

输入的前两个数字是矩阵大小。后面的数字是矩阵内容。

输出描述:

返回矩阵中非1的元素个数

补充说明:

m和n不会超过30(含30)。

示例1

输入:

4 4
0 0 0 0
0 2 2 2
0 2 0 0
0 2 0 0

输出:

9

说明:输入数字前两个数字是矩阵大小。后面的是数字是矩阵内容。
这个矩阵的内容如下:

  0,0,0,0
  0,2,2,2
  0,2,0,0
  0,2,0,0
}

起始位置 (0,0)被修改为1后,最终只能同化矩阵为:


  1,1,1,1
  1,2,2,2
  1,2,0,0
  1,2,0,0
}

所以矩阵中非1的元素个数为9。

m, n = map(int, input().split())
matrix = []
for _ in range(m):
    matrix.append(list(map(i

猜你喜欢

转载自blog.csdn.net/2301_76848549/article/details/133135012
今日推荐