计算由C ++中相同元素组成的矩阵中的行

给定一个由整数组成的矩阵。目的是找到矩阵中具有所有相同元素的行数。

如果有5X4矩阵,如图所示-

15131
11111
53235
77777

答案将是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