Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm số hàng trong ma trận chứa cùng một phần tử trong C++


Cho một ma trận các số nguyên. Mục tiêu là tìm số hàng trong ma trận mà tất cả các phần tử trong hàng đó đều giống nhau.

Ví dụ

Ma trận 4x4:

1 1 1 1
2 3 2 7
3 3 3 3
Đầu ra: 2 (hàng 0 toàn số 1, hàng 2 toàn số 3).

Đầu vào: Ma trận 3x4 toàn các hàng [1 2 3 4]
Đầu ra: 0 (không hàng nào có tất cả phần tử giống nhau).

Giải thuật

Sử dụng vector của vector int. Duyệt từng hàng, tạo một set<int> cho hàng đó, chèn tất cả phần tử. Nếu kích thước set = 1 thì hàng đó toàn phần tử giống nhau.

  • Hàm same_rows(vector<vector<int>> matrix, int size) trả về số hàng thỏa mãn.
  • Duyệt i từ 0 đến size-1.
  • Với mỗi hàng, tạo set<int> set_row.
  • Chèn tất cả matrix[i][j] vào set.
  • Nếu set_row.size() == 1 thì tăng count.

Ví dụ triển khai

#include <bits/stdc++.h>
using namespace std;

int same_rows(vector<vector<int>> matrix, int size) {
    int count = 0;
    for (int i = 0; i < size; i++) {
        set<int> set_row;
        for (int j = 0; j < matrix[i].size(); j++) {
            set_row.insert(matrix[i][j]);
        }
        if (set_row.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;
}

Kết quả

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