假设我们有一个矩阵垫。以下是几个不同的值:矩阵的单元格可以容纳这三个字符中的任何一个
0表示空白区域。
1枚炸弹。
敌人为2。
现在,炸弹只能从一端到另一端沿水平和垂直方向爆炸。我们必须检查炸弹爆炸时是否所有敌人都会死亡。
所以,如果输入像
0 | 0 | 2 | 0 |
0 | 1 | 0 | 0 |
0 | 2 | 0 | 0 |
0 | 0 | 1 | 0 |
那么输出将为True,因为位置[1,1]的炸弹可以填充位置[2,1]的敌人,位置[0,2]的敌人将被放置在[3,2]的炸弹杀死。
为了解决这个问题,我们将遵循以下步骤-
r:=垫子的行数
c:=垫子的列数
i:= 0,j:= 0,x:= 0,y:= 0
对于范围在0到r-1之间的i
如果mat [i,j]为1,则
如果mat [i,y]不为1,则
mat [i,y]:= 0
如果mat [x,j]不为1,则
mat [x,j]:= 0
对于0到r-1范围内的x
对于y在0到c-1的范围内,执行
对于范围在0到c-1之间的j
对于范围在0到r-1之间的i
如果mat [i,j]为2,则
返回False
对于范围在0到c-1之间的j
返回True
让我们看下面的实现以更好地理解-
def solve(mat): r = len(mat) c = len(mat[0]) i, j, x, y = 0, 0, 0, 0 for i in range(r): for j in range(c): if mat[i][j] == 1: for x in range(r): if mat[x][j] != 1: mat[x][j] = 0 for y in range(c): if mat[i][y] != 1: mat[i][y] = 0 for i in range(r): for j in range(c): if mat[i][j] == 2: return False return True matrix = [ [0,0,2,0], [0,1,0,0], [0,2,0,0], [0,0,1,0] ] print(solve(matrix))
[ [0,0,2,0], [0,1,0,0], [0,2,0,0], [0,0,1,0] ]输出结果
True