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

Chương trình tìm ma trận cho chiều cao của từng chung cư được tăng lên chiều cao tối đa có thể bằng Python?

Giả sử chúng ta có một ma trận 2D, trong đó ma trận [r, c] đại diện cho chiều cao của một chung cư trong một thành phố. Đường chân trời phía tây-đông có thể nhìn thấy bằng cách lấy tối đa mỗi hàng trong ma trận. Và có thể nhìn thấy đường chân trời Bắc-Nam bằng cách lấy tối đa mỗi cột. Chúng tôi phải tìm một ma trận mới trong đó chiều cao của mỗi căn hộ được tăng lên đến chiều cao tối đa có thể trong khi vẫn giữ nguyên đường chân trời theo hướng Tây-Đông và Bắc-Nam.

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

2 3 4
5 6 7
8 9 10


4 4 4
7 7 7
8 9 10

như đường chân trời tây-đông là [4, 7, 10] và đường chân trời bắc-nam là [8, 9, 10]. Chúng tôi có thể tăng mọi thứ ở hàng đầu tiên lên giá trị 4 và mọi thứ ở hàng thứ hai lên giá trị 7 mà không thay đổi đường chân trời.

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

  • r:=danh sách tối đa của mỗi hàng trong ma trận

  • c:=danh sách tối đa của mỗi cột trong ma trận

  • đố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

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

      • nếu r [i]

        • ma trận [i, j]:=r [i]

      • nếu không,

        • ma trận [i, j]:=c [j]

  • ma trận trả về

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

Ví dụ

class Solution:
   def solve(self, matrix):
      r = [max(i) for i in matrix]
      c = [max(i) for i in zip(*matrix)]
      for i in range(len(matrix)):
         for j in range(len(matrix[i])):
            if r[i] < c[j]:
               matrix[i][j] = r[i]
            else:
               matrix[i][j] = c[j]
      return matrix

ob = Solution()
matrix = [
   [2, 3, 4],
   [5, 6, 7],
   [8, 9, 10]
]
print(ob.solve(matrix))

Đầu vào

[[2, 3, 4],
[5, 6, 7],
[8, 9, 10]]

Đầu ra

[[4, 4, 4], [7, 7, 7], [8, 9, 10]]