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

Chương trình tìm số vị trí đặc biệt trong ma trận nhị phân bằng Python

Giả sử chúng ta có một ma trận nhị phân bậc m x ​​n, chúng ta phải tìm số vị trí đặc biệt trong ma trận. Vị trí (i, j) là một vị trí đặc biệt khi mat [i, j] =1 và tất cả các phần tử khác trong hàng i và cột j bằng 0.

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

1 0 0 0 0
0 0 1 0 0
0 0 0 1 1
0 1 0 0 0

thì đầu ra sẽ là 3, ở đây các vị trí đặc biệt là (0, 0), (1,2) và (3,1).

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

  • đặc biệt:=0

  • đối với tôi trong phạm vi 0 đến số hàng của ma trận, hãy thực hiện

    • nếu số 1 trong ma trận hàng [i] là 1 thì

      • numOfOne:=0

      • indexOfOne:=vị trí của 1 trong ma trận [i]

      • đối với j trong phạm vi 0 đến kích thước cột của ma trận, thực hiện

        • nếu ma trận [j, indexOfOne] giống 1, thì

          • numOfOne:=numOfOne + 1

        • nếu numOfOne> 1, thì

          • đi ra từ vòng lặp

      • nếu numOfOne giống với 1 thì

        • đặc biệt:=special + 1

  • trả lại đặc biệt

Ví dụ (Python)

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

def solve(matrix):
   special = 0
   for i in range(len(matrix)):
      if matrix[i].count(1) == 1:
         numOfOne = 0
         indexOfOne = matrix[i].index(1)
         for j in range(len(matrix)):
            if matrix[j][indexOfOne] == 1:
               numOfOne += 1
            if numOfOne > 1:
               break

         if numOfOne == 1:
            special += 1

   return special

matrix = [[1,0,0,0,0],
   [0,0,1,0,0],
   [0,0,0,1,1],
   [0,1,0,0,0]]
print(solve(matrix))

Đầu vào

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

Đầu ra

3