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

Chương trình tìm số phần tử trong ma trận tuân theo tiêu chí cột hàng trong Python

Giả sử chúng ta có một ma trận nhị phân; chúng ta phải tìm số phần tử trong ma trận tuân theo các quy tắc sau -

  • ma trận [r, c] =1

  • ma trận [r, j] =0 với mọi j khi j không bằng c và ma trận [i, c] =0 với mọi i khi i không bằng r.

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

0 0 1
1 0 0
0 1 0

thì đầu ra sẽ là 3, bởi vì chúng ta có các ô (0,2), (1,0) và (2,1) đáp ứng các tiêu chí.

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

  • nếu ma trận trống, thì

    • trả về 0

  • row:=danh sách tổng của tất cả các mục nhập hàng trong ma trận

  • col:=danh sách tổng của tất cả các mục nhập cột trong ma trận

  • m:=số hàng của ma trận

  • n:=số cột của ma trận

  • res:=0

  • đối với r trong phạm vi 0 đến m - 1, thực hiện

    • đối với c trong phạm vi 0 đến n - 1, thực hiện

      • nếu ma trận [r, c] là 1 và hàng [r] là 1 và col [c] cũng là 1 thì

        • res:=res + 1

  • trả lại res

Ví dụ

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

def solve(matrix):
   if not matrix:
      return 0

   row = [sum(r) for r in matrix]
   col = [sum(c) for c in zip(*matrix)]

   m, n = len(matrix), len(matrix[0])
   res = 0
   for r in range(m):
      for c in range(n):
         if matrix[r][c] == 1 and row[r] == 1 and col[c] == 1:
            res += 1
   return res

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

Đầu vào

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

Đầu ra

3