Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 행과 열의 가장 큰 요소가 주어졌을 때 원래 행렬 찾기


각각 크기가 N과 M인 두 개의 배열 A와 B가 있고 하나의 N X M 이진 행렬이 있다고 가정합니다. 여기서 1은 원래 행렬에 양의 정수가 있고 0은 다음을 의미합니다. 위치는 원래 행렬에도 0을 유지합니다. A[i]가 i번째 행에서 가장 큰 요소를 나타내고 B[j]가 j번째 열에서 가장 큰 요소를 나타내도록 원래 행렬을 생성해야 합니다.

따라서 입력이 A =[4, 2, 3], B =[3, 1, 0, 0, 4, 0, 5] 행렬과 같으면 출력은 행렬

이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • N :=A의 크기

  • M :=B의 크기

  • 범위 0에서 N까지의 i에 대해 수행

    • 0에서 M 범위의 j에 대해 수행

      • mat[i, j]가 1과 같으면

        • A[i] 및 B[j]의 최소 표시

      • 그렇지 않으면

        • 새 줄 인쇄

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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

입력

[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]]

출력

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