Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 동일한 요소로 구성된 행렬의 행 수 계산

<시간/>

정수로 구성된 행렬이 주어집니다. 목표는 행렬에서 동일한 요소가 모두 포함된 행의 수를 찾는 것입니다.

그림과 같이 5X4 행렬이 있는 경우 -

1 5 1 3 1
1 1 1 1 1
5 3 2 3 5
7 7 7 7 7

답은 2이며, 1행(모두 1 포함) 및 3행(7개 모두 포함)에 동일한 요소가 포함됩니다.

예를 들어 이해합시다.

입력

matrix =
   [ 1 1 1 1 ]
   [ 2 3 2 7 ]
   [ 3 3 3 3 ]

출력 − 동일한 요소로 구성된 행렬의 행 수는 − 2

설명 − 0행은 1을 모두 포함하고 2행은 3을 모두 포함합니다.

입력 -

matrix =
   [ 1 2 3 4 ]
   [ 1 2 3 4 ]
   [ 1 2 3 4 ]

출력 − 동일한 요소로 구성된 행렬의 행 수는 − 0

설명 − 모든 행에 다른 요소가 있습니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

우리는 vector의 벡터 형태로 행렬을 취하고 있습니다. 우리는 각 벡터를 순회하고 각 행에 대해 set를 생성합니다. 이 세트에 행 요소를 계속 삽입하십시오. 결국 이 세트에 1개의 요소만 있는 경우(세트 크기 사용). 그러면 현재 행에 동일한 요소가 모두 포함됩니다.

  • 행렬을 벡터 > 행렬로 가져와서 초기화합니다.

  • matrix.size()를 사용하여 크기를 계산합니다.

  • 함수 same_rows(vector> matrix, int size)는 행렬과 크기를 가져와서 동일한 요소가 있는 행의 개수를 반환합니다.

  • 초기 카운트를 0으로 합니다.

  • for 루프를 사용하여 행렬을 탐색합니다. i=0 ~ i=크기.

  • j=0에서 j

  • 현재 행의 요소를 저장하기 위해 set set_row를 사용합니다.

  • set_row.insert(matrix[i][j])를 사용하여 현재 행에 대해 이 세트에 요소를 추가합니다.

  • 마지막에 set_row의 크기를 확인하십시오. 1이면 이 행은 모두 동일한 요소를 갖습니다. 증분 수.

  • 모든 행에 대한 모든 반복이 끝나면 최종 결과로 count를 반환합니다.

예시

#include <bits/stdc++.h>
using namespace std;
int same_rows(vector> matrix, int size){
   int count = 0;
   for (int i = 0; i < size; i++){
      set set_row;
      for (int j = 0; j < matrix[i].size(); j++){
         set_row.insert(matrix[i][j]);
      }
      int set_size = set_row.size();
      if (set_size == 1){
         count++;
      }
   }
   return count;
}
int main(){
   vector<vector<int>> matrix = {
      { 2, 2, 2, 2},
      { 5, 5, 5, 5 },
      { 2, 2, 2, 2 },
      {5, 5, 5, 5}
   };
   int size = matrix.size();
   cout<<"Count of rows in a matrix that consist of same element are: "<<same_rows(matrix, size);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Count of rows in a matrix that consist of same element are: 4