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

Tìm ma trận ban đầu khi phần tử lớn nhất trong một hàng và một cột được cho trong Python


Giả sử chúng ta có hai mảng A và B có kích thước lần lượt là N và M và chúng ta cũng có một ma trận nhị phân N X M trong đó 1 biểu thị rằng có một số nguyên dương trong ma trận ban đầu và 0 có nghĩa là vị trí cũng giữ 0 vào ma trận ban đầu. Chúng ta phải tạo ma trận ban đầu để A [i] biểu thị phần tử lớn nhất trong hàng thứ i và B [j] biểu thị phần tử lớn nhất trong cột thứ j.

Vì vậy, nếu đầu vào là ma trận A =[4, 2, 3], B =[3, 1, 0, 0, 4, 0, 5] thì đầu ra sẽ là ma trận

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

  • N:=kích thước của A

  • M:=kích thước của B

  • đối với tôi trong phạm vi từ 0 đến N, hãy thực hiện

    • đối với j trong phạm vi từ 0 đến M, thực hiện

      • nếu mat [i, j] giống 1 thì

        • hiển thị tối thiểu A [i] và B [j]

      • nếu không,

        • in một dòng mới

Ví dụ

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

def print_original_mat(A, B, mat) :
   N = len(A)
   M = len(B)
   for i in range(N) :
      for j in range(M) :
         if (mat[i][j] == 1) :
            print(min(A[i], B[j]), end = " ")
         else :
            print(0, end = " ")
      print()
A = [4, 2, 3]
B = [3, 1, 0, 0, 4, 0, 5]
mat = [
   [1, 0, 0, 0, 1, 0, 1],
   [0, 0, 1, 0, 0, 1, 1],
   [1, 1, 0, 1, 1, 0, 0]]
print_original_mat(A, B, mat);

Đầu vào

[4, 2, 3],
[3, 1, 0, 0, 4, 0, 5],
[[1, 0, 0, 0, 1, 0, 1],
[0, 0, 1, 0, 0, 1, 1],
[1, 1, 0, 1, 1, 0, 0]]

Đầu ra

3 0 0 0 4 0 4
0 0 0 0 0 0 2
3 1 0 0 3 0 0