给定一个由整数组成的矩阵。目的是找到矩阵中具有所有相同元素的行数。
如果有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
说明-所有行都有不同的元素。
我们采用vectors <int>的向量形式的矩阵。我们将遍历每个向量,并为每行创建一个set <int>。继续向该集合插入行元素。最后,如果该集合只有1元素(采用集合大小)。然后,当前行具有所有相同的元素。
将矩阵作为向量<vector <int>>矩阵并将其初始化
使用matrix.size()计算大小。
函数same_rows(vector <vector <int >> matrix,int size)获取矩阵及其大小,并返回具有相同元素的行数。
将初始计数设为0。
使用for循环遍历矩阵。i = 0到i = size。
对于每一行,从j = 0遍历到j <matrix [i] .size()。
以set <int> 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