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

Python에서 행과 열 뒤에 있는 합을 포함하는 행과 열에 대한 행렬을 찾는 프로그램

<시간/>

주어진 행렬이 있다고 가정합니다. 차원이 주어진 행렬과 동일한 새로운 행렬 res를 찾아야 합니다. 여기서 res[i, j]의 각 요소 =각 r ≤ 나는, 그리고 c ≤ j.

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

8 2
7 4

그러면 출력은

8 10
15 21

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

  • 행렬이 비어 있으면

    • 반환 행렬

  • R :=행렬의 행 개수

  • C :=행렬의 열 개수

  • 범위 1에서 R - 1까지의 r에 대해 수행

    • 범위 0에서 C - 1의 c에 대해 수행

      • 행렬[r, c] :=행렬[r, c] + 행렬[r - 1, c]

  • 0 ~ R - 1 범위의 r에 대해

    • 범위 1에서 C - 1까지의 c에 대해 수행

      • 행렬[r, c] :=행렬[r, c] + 행렬[r, c - 1]

  • 반환 행렬

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

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

   R, C = len(matrix), len(matrix[0])
   for r in range(1, R):
         for c in range(C):
            matrix[r][c] += matrix[r - 1][c]

   for r in range(R):
      for c in range(1, C):
         matrix[r][c] += matrix[r][c - 1]

   return matrix

matrix = [
   [8, 2],
   [7, 4]
]
print(solve(matrix))

입력

[[8, 2],[7, 4]]

출력

[[8, 10], [15, 21]]