Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm các hàng trong ma trận bao gồm cùng một phần tử trong C ++

Chúng tôi được cung cấp một ma trận bao gồm các số nguyên. Mục tiêu là tìm số hàng trong ma trận có tất cả các phần tử giống nhau trong đó.

Nếu có ma trận 5X4 như hình -

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

Câu trả lời sẽ là 2, hàng 1 (có tất cả 1) và hàng 3 (có tất cả 7) chứa cùng một phần tử.

Hãy cho chúng tôi hiểu với các ví dụ.

Đầu vào

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

Đầu ra - Số hàng trong ma trận bao gồm cùng một phần tử là - 2

Giải thích - Hàng 0 chứa tất cả 1 và hàng 2 chứa tất cả 3.

Đầu vào -

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

Đầu ra - Số hàng trong ma trận bao gồm cùng một phần tử là - 0

Giải thích - Tất cả các hàng có các phần tử khác nhau.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Chúng tôi đang lấy ma trận dưới dạng một vectơ của vectơ . Chúng tôi sẽ duyệt qua từng vectơ và tạo một tập hợp cho mỗi hàng. Tiếp tục chèn các phần tử hàng vào tập hợp này. Cuối cùng nếu tập hợp này chỉ có 1 phần tử (lấy kích thước đặt). Sau đó, hàng hiện tại có tất cả các phần tử giống nhau.

  • Lấy ma trận dưới dạng ma trận vectơ > và khởi tạo nó

  • Tính toán kích thước bằng matrix.size ().

  • Hàm same_rows (vector > matrix, int size) nhận ma trận và kích thước của nó và trả về số lượng các hàng có các phần tử giống nhau.

  • Lấy số lượng ban đầu là 0.

  • Duyệt ma trận bằng vòng lặp for. i =0 đến i =size.

  • Đối với mỗi hàng đi ngang từ j =0 đến j

  • Lấy một tập hợp set_row để lưu trữ các phần tử của hàng hiện tại.

  • Thêm các phần tử vào tập hợp này cho hàng hiện tại bằng set_row.insert (matrix [i] [j]).

  • Ở cuối kiểm tra kích thước của set_row. Nếu nó là 1 thì hàng này có tất cả các phần tử giống nhau. Số lượng tăng dần.

  • Khi kết thúc tất cả các lần lặp lại cho tất cả các hàng, trả về số lượng là kết quả cuối cùng.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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