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

Python을 사용하여 이진 행렬에서 특수 위치의 수를 찾는 프로그램

<시간/>

m x n 차수의 이진 행렬이 있다고 가정하면 행렬에서 특수 위치의 수를 찾아야 합니다. 위치 (i,j)는 mat[i,j] =1이고 i행과 j열의 다른 모든 요소가 0일 때 특별한 위치입니다.

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

1 0 0 0 0
0 0 1 0 0
0 0 0 1 1
0 1 0 0 0

그러면 출력은 3이 됩니다. 여기서 특수 위치는 (0, 0), (1,2) 및 (3,1)입니다.

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

  • 특수 :=0

  • 행렬의 행 수까지 범위 0에 있는 i에 대해

    • 행 행렬[i]의 1의 개수가 1이면

      • numOfOne :=0

      • indexOfOne :=행렬[i]에서 1의 위치

      • 범위 0에서 행렬의 열 크기까지의 j에 대해

        • 행렬[j, indexOfOne]이 1과 같으면

          • numOfOne :=numOfOne + 1

        • numOfOne> 1이면

          • 루프에서 나오다

      • numOfOne이 1과 같으면

        • 특수 :=특수 + 1

  • 특별 반환

예제(파이썬)

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

def solve(matrix):
   special = 0
   for i in range(len(matrix)):
      if matrix[i].count(1) == 1:
         numOfOne = 0
         indexOfOne = matrix[i].index(1)
         for j in range(len(matrix)):
            if matrix[j][indexOfOne] == 1:
               numOfOne += 1
            if numOfOne > 1:
               break

         if numOfOne == 1:
            special += 1

   return special

matrix = [[1,0,0,0,0],
   [0,0,1,0,0],
   [0,0,0,1,1],
   [0,1,0,0,0]]
print(solve(matrix))

입력

[[1,0,0,0,0],
[0,0,1,0,0],
[0,0,0,1,1],
[0,1,0,0,0]]

출력

3