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

Python에서 행렬의 대각 합을 찾는 프로그램

<시간/>

정방 행렬이 있다고 가정합니다. 행렬 대각선의 합을 찾아야 합니다. 따라서 기본 대각선의 모든 요소와 보조 대각선의 모든 요소의 합계만 포함하고 교차 요소는 무시합니다.

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

10 5 9 6
8 15 3 2
3 8 12 3
2 11 7 3

그러면 출력은 다음과 같습니다. 기본 대각선 요소는 [10,15,12,3] 합계는 40, 보조 대각선 [6,3,8,2] 합계는 19이므로 총 합계는 59입니다.

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

  • m :=행렬의 행 수

  • m이 1과 같으면

    • 반환 행렬[0, 0]

  • 개수 :=0

  • 0 ~ m - 1 범위의 i에 대해 수행

    • 개수 :=개수 + 행렬[i, i]

    • 개수 :=개수 + 행렬[i, (-1 - i)]

  • m이 홀수이면

    • ind :=m/2의 몫

    • 개수 :=개수 - 행렬[ind, ind]

  • 반환 횟수

예제(파이썬)

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

def solve(matrix):
   m = len(matrix)
   if m == 1: return matrix[0][0]

   count = 0
   for i in range(m):
      count += matrix[i][i]
      count += matrix[i][-1 - i]

   if m % 2 == 1: count -= matrix[m // 2][m // 2]

   return count

matrix = [[10,5,9,6],[8,15,3,2],[3,8,12,3],[2,11,7,3],]
print(solve(matrix))

입력

[[10,5,9,6],[8,15,3,2],[3,8,12,3],[2,11,7,3]]

출력

59