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

Python에서 주어진 셀의 행 및/또는 열에 있는 요소를 제외한 행렬의 모든 요소의 합 찾기


2D 행렬과 셀 인덱스 집합이 있다고 가정합니다. 셀 인덱스는 (i, j)로 표시되며 여기서 i는 행이고 j는 열입니다. 이제 모든 주어진 셀 인덱스 (i, j)에 대해 i번째 행에 존재하는 요소를 제외한 모든 행렬 요소의 합을 찾아야 하고 /또는 j번째 열.

따라서 입력이 다음과 같으면

2 2 3
4 5 7
6 4 3

셀 인덱스 =[(0, 0), (1, 1), (0, 1)], 출력은 [19, 14, 20]

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

  • n :=ind_arr의 크기

  • ans :=새 목록

  • 0에서 n 사이의 i에 대해 수행

    • 합계 :=0

    • 행 :=ind_arr[i, 0]

    • 열 :=ind_arr[i, 1]

    • mat의 행 수에 대한 범위 0의 j에 대해 수행

      • 맵의 열 개수까지 범위 0의 k에 대해 수행

        • j가 row와 같지 않고 k가 col과 같지 않다면

          • 합계 :=합계 + mat[j, k]

    • ans의 끝에 Sum 삽입

  • 반환

예시

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

def show_sums(mat, ind_arr):
   n = len(ind_arr)
   ans = []
   for i in range(0, n):
      Sum = 0
      row = ind_arr[i][0]
      col = ind_arr[i][1]
      for j in range(0, len(mat)):
         for k in range(0, len(mat[0])):
            if j != row and k != col:
               Sum += mat[j][k]
      ans.append(Sum)
   return ans
mat = [[2, 2, 3], [4, 5, 7], [6, 4, 3]]
ind_arr = [(0, 0),(1, 1),(0, 1)]
print(show_sums(mat, ind_arr))

입력

mat = [[2, 2, 3], [4, 5, 7], [6, 4, 3]] ind_arr = [(0, 0),(1, 1),(0, 1)

출력

[19, 14, 20]