检查是否所有敌人都被放置在Python矩阵中的炸弹杀死了

假设我们有一个矩阵垫。以下是几个不同的值:矩阵的单元格可以容纳这三个字符中的任何一个

  • 0表示空白区域。

  • 1枚炸弹。

  • 敌人为2。

现在,炸弹只能从一端到另一端沿水平和垂直方向爆炸。我们必须检查炸弹爆炸时是否所有敌人都会死亡。

所以,如果输入像

0020
0100
0200
0010

那么输出将为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