C++ 中统计矩阵中所有元素都相同行的数量
给定一个由整数构成的矩阵。目标是找到矩阵中所有元素都相同的行的数量。
如果有一个 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
解释 - 所有行都包含不同的元素。
下面程序中使用的方案如下
我们将矩阵以 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
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP