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

C++の正方行列の2つの対角線にある行ごとの共通要素


入力として2D正方行列を指定します。目標は、一次対角線と二次対角線の両方に共通する要素を見つけることです。入力行列が

の場合
1 2 3
2 2 4
1 4 7

その場合、その一次対角線は1 2 7であり、二次対角線は321です。共通要素は2です。

両方に常に少なくとも1つの共通の要素があります。

入力 −マトリックス[] [5] ={{1、2、1}、{4、1、6}、{1、8、1}};

出力 −対角線の行方向の共通要素:3

説明 −マトリックスは次のとおりです。

1 2 1
4 1 6
1 8 1

一次対角線=11 1、二次対角線=1 1 1

3つの値はすべて共通です。 count =3

入力 −マトリックス[] [5] ={{1、4、4、1}、{3、4、4、6}、{1、1、1、4}、{1、9、9、2}};

出力 −対角線の行方向の共通要素:3

説明 −マトリックスは次のとおりです。

1 4 4 1
3 4 4 6
1 1 1 4
1 9 9 2

一次対角線=14 1 2、二次対角線=1 4 1 1

最初の3つの値が一般的です。 count =3

以下のプログラムで使用されているアプローチは次のとおりです

このアプローチでは、最初に行0から正方行列を行方向にトラバースします。各行について、要素M[i][i]がM[i][size-i-1]と等しいかどうかを確認します。はいの場合、両方の対角線の共通要素、カウントをインクリメントします。

  • 入力行列Matrix[][5]を取ります。

  • サイズを設定します。

  • 関数countElement(int mt [] [5]、int size)は、入力行列とそのサイズを受け取り、一次対角線と二次対角線の両方の共通値の数を返します。

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

  • forループを使用してi=0からi

    までトラバースします。
  • mt [i] [i] ==mt [i] [size-i-1]の場合、カウントをインクリメントします。

  • 結果として最後にリターンカウント。

  • 結果をメインに出力します。

#include <iostream>
using namespace std;
int countElement(int mt[][5], int size){
   int count = 0;
   for (int i=0;i<size;i++){
      if (mt[i][i] == mt[i][size-i-1]){
         count=count+1;
      }
   }
   return count;
}
int main(){
   int Matrix[][5] = {{1, 2, 1}, {4, 1, 6}, {1, 8, 1}};
   int size=3;
   cout<<"Row-wise common elements in diagonals:"<<countElement(Matrix, size);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます

Row-wise common elements in diagonals:3

  1. C++での行列の行方向と列方向のトラバーサル

    マトリックスは2つの方法でトラバースできます。行マイズトラバーサルは、最初の行から2番目、というように最後の行まで、各行を1つずつ訪問します。行の要素は、インデックス0から最後のインデックスまで返されます。 列ごとのトラバーサルでは、要素は最初の列から最後の列に順番にトラバースされます。 2DマトリックスではM[i][j]。インデックスiは行を表すために使用され、インデックスjは列を表すために使用されます。行ごとのトラバーサルの場合は、から開始します。 i=0行目および0<=j<最後のインデックス i=1行目および0<=j<最後のインデックス ..... i=最後の行と0<=j<

  2. C++の2つの二分探索木のすべての要素

    2つのバイナリ検索ツリーがあり、これらのツリーにすべての要素が存在する値のリストを返す必要があり、リスト要素は昇順になります。したがって、木が次のような場合- その場合、出力は[0,1,1,2,3,4]になります。 これを解決するには、次の手順に従います- ansという配列を定義し、2つのスタックst1とst2を定義します curr1:=root1およびcurr2:=root2 ノードroot1とすべての左側のノードをst1に挿入し、ノードroot2とすべての左側のノードをst2に挿入します st1が空でないかst2が空でない場合 st1が空でない場合、および(st2が空で