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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告