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
廣告