C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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のベクトルの形で行列を取ります。各ベクトルをトラバースし、各行にsetを作成します。このセットに行要素を挿入し続けます。最後に、このセットに要素が1つしかない場合(セットサイズを取得)。その場合、現在の行にはすべて同じ要素が含まれます。

  • 行列をベクトル>行列として取り、初期化します

  • matrix.size()を使用してサイズを計算します。

  • 関数same_rows(vector > matrix、int size)は、行列とそのサイズを受け取り、同じ要素を持つ行の数を返します。

  • 初期カウントを0とします。

  • forループを使用して行列をトラバースします。 i=0からi=size。

  • 各行について、j=0からjまでトラバースします。

  • 現在の行の要素を格納するためのsetset_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


  1. C++の配列内の各要素のSurpasserCountを検索します

    1つの配列Aが与えられたと仮定します。その配列内の各要素の超過者の数を見つける必要があります。超過者は、現在の要素の配列の右側に存在するより大きな要素です。 A ={2、7、5、3、0、8、1}とすると、超過者は{4、1、1、1、2、0、0}であるため、2の右側には4つの数字があります。 4よりも多く、他の人にも同じルールがあります。解決策は非常に単純で、2つのネストされたループがあり、要素ごとに、超過者をカウントして、別の配列に格納します。 例 #include <iostream> using namespace std; void gerSurpassers(int arr[

  2. 各配列要素のモジュラスが同じになるように「k」を見つけるC++プログラム

    この記事では、特定の配列の各要素での係数が同じになるように、整数「k」を見つけるプログラムについて説明します。 たとえば、配列が与えられたとしましょう。 arr = {12, 22, 32} 次に、k =1、2、5、10の出力値があります。 y)の2つの値の場合を考えてみましょう。次に、(y + Difference)%k =y%kになります。これを解決すると、 difference%k = 0 したがって、配列内の最大要素と最小要素の差に対するすべての除数を見つけてから、配列内のすべての要素の余りが同じかどうかを各除数で確認します。 例 #include<bits/stdc++