【华为OD-E卷 - 计算疫情扩散时间 100分(python、java、c++、js、c)】
题目
在一个地图中(地图由n*n个区域组成),有部分区域被感染病菌。 感染区域每天都会把周围(上下左右)的4个区域感染。 请根据给定的地图计算,多少天以后,全部区域都会被感染。 如果初始地图上所有区域全部都被感染,或者没有被感染区域,返回-1
输入描述
- 一行N*N个数字(只包含0,1,不会有其他数字)表示一个地图,数字间用,分割,0表示未感染区域,1表示已经感染区域 每N个数字表示地图中一行,输入数据共表示N行N列的区域地图。
例如输入1,0,1,0,0,0,1,0,1,表示地图
1,0,1 0,0,0 1,0,1
输出描述
- 一个整数,表示经过多少天以后,全部区域都被感染 1<=N<200
备注
用例
用例一:
输入:
1,0,1,0,0,0,1,0,1
输出:
2
用例二:
输入:
0,0,0,0
输出:
-1
用例三:
输入:
1,1,1,1,1,1,1,1,1
输出:
-1
python解法
- 解题思路:
- 这段代码模拟了一个病毒在二维网格中传播的过程,类似于传染病的传播模型。目标是计算完全感染整个网格所需的天数,或者判断是否无法完全感染。以下是具体步骤:
输入与网格构造:
输入一维数组 arr,表示一个大小为