C++の正方行列の2つの対角線にある行ごとの共通要素
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
-
C++での行列の行方向と列方向のトラバーサル
マトリックスは2つの方法でトラバースできます。行マイズトラバーサルは、最初の行から2番目、というように最後の行まで、各行を1つずつ訪問します。行の要素は、インデックス0から最後のインデックスまで返されます。 列ごとのトラバーサルでは、要素は最初の列から最後の列に順番にトラバースされます。 2DマトリックスではM[i][j]。インデックスiは行を表すために使用され、インデックスjは列を表すために使用されます。行ごとのトラバーサルの場合は、から開始します。 i=0行目および0<=j<最後のインデックス i=1行目および0<=j<最後のインデックス ..... i=最後の行と0<=j<
-
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が空で