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

解释 - 所有行都包含不同的元素。

下面程序中使用的方案如下

我们将矩阵以 vector of vectors<int> 的形式存储。我们将遍历每个向量,并为每一行创建一个 set<int>。将行元素不断插入到此集合中。最后,如果此集合只包含 1 个元素(获取集合大小),则当前行所有元素都相同。

  • 将矩阵作为 vector < vector <int> > matrix 并进行初始化

  • 使用 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,则该行所有元素都相同。递增计数。

  • 在所有行迭代结束后,返回计数作为最终结果。

示例

实时演示

#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

 

更新于: 2020-12-01

727 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.