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() == 1thì tăngcount.
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