Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem tất cả kẻ thù có bị giết bằng bom được đặt trong ma trận bằng Python hay không

Giả sử chúng ta có một mat ma trận. Có một số giá trị khác nhau như sau Các ô của ma trận có thể chứa bất kỳ ký tự nào trong số 3 ký tự này

  • 0 cho vùng trống.
  • 1 cho bom.
  • 2 cho Kẻ thù.

Giờ đây bom chỉ có thể nổ theo hướng ngang và dọc từ đầu này sang đầu khác. Chúng ta phải kiểm tra xem tất cả kẻ thù có chết khi bom nổ hay không.

Vì vậy, nếu đầu vào giống như

0 0 2 0
0 1 0 0
0 2 0 0
0 0 1 0

thì đầu ra sẽ là True, vì bom tại vị trí [1, 1] có thể lấp đầy kẻ thù tại vị trí [2, 1] và kẻ thù tại [0, 2] sẽ bị giết bởi bom đặt tại [3, 2].

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • r:=số hàng của thảm
  • c:=số lượng col của tấm lót
  • i:=0, j:=0, x:=0, y:=0
  • đối với tôi trong phạm vi từ 0 đến r - 1, thực hiện
    • đối với j trong phạm vi từ 0 đến c - 1, thực hiện
      • nếu mat [i, j] là 1, thì
        • đối với x trong phạm vi từ 0 đến r - 1, thực hiện
          • nếu mat [x, j] không phải là 1, thì
            • mat [x, j]:=0
        • đối với y trong phạm vi từ 0 đến c - 1, thực hiện
          • nếu mat [i, y] không phải là 1, thì
            • mat [i, y]:=0
  • đối với tôi trong phạm vi từ 0 đến r - 1, thực hiện
    • đối với j trong phạm vi từ 0 đến c - 1, thực hiện
      • nếu mat [i, j] là 2, thì
        • trả về Sai
  • trả về True

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

[
[0,0,2,0],
[0,1,0,0],
[0,2,0,0],
[0,0,1,0]
]

Đầu ra

True