合計がC++の対角合計に等しい行/列をカウントします
行と列を持つ2次元配列である行列が与えられます。タスクは、すべての行と列の合計の数を計算して、主行列または二次行列の合計。
入力 −
int arr[row][col] = { { 4, 1, 7 }, { 10, 3, 5 }, { 2, 2, 11} }
出力 −合計が対角合計に等しい行/列の数は&mins;です。 2
説明 −
主対角線の合計は4+3 + 11 =18であり、二次対角線の合計は7 + 3 + 2=12です。行の合計は4+1 + 7 =12(TRUE)、10 + 3 + 5=18です。 (TRUE)、2 + 2 + 11 =15(FALSE)および列の合計は次のとおりです:4 + 10 + 2 =16(FALSE)、1 + 3 + 2 =6(FALSE)、7 + 5 + 11 =23( FALSE)。したがって、主対角線と二次対角線の合計に一致する行/列の数は-2
です。入力 −
int arr[row][col] = { { 1, 2, 3 }, { 4, 5, 2 }, { 7, 9, 10} }
出力 −合計が対角合計に等しい行/列の数は− 2
説明 −
主対角線の合計は1+5 + 10 =16であり、二次対角線の合計は7 + 3 + 5=15です。行の合計は1+2 + 3 =6(FALSE)、4 + 5 + 2=11です。 (FALSE)、7 + 9 + 10 =26(FALSE)および列の合計は次のとおりです:7 + 4 + 1 =12(FALSE)、9 + 5 + 2 =16(TRUE)、3 + 2 + 10 =15( TRUE)。したがって、主対角線と二次対角線の合計に一致する行/列の数は-2
です。以下のプログラムで使用されているアプローチは次のとおりです
-
2次元配列を作成して、行サイズと列サイズのマトリックスを形成します
-
主行列と二次行列の変数を作成します。また、カウントを格納するためのカウント変数
-
ループFORをiから0までcolまで、jをcol-1からcolまで開始し、iをインクリメントしてjをデクリメントします
-
ループ内で、プリンシパルをプリンシパル+マトリックス[i] [i]として設定し、セカンダリをセカンダリ+マトリックス[i] [j]
として設定します。 -
iからcolまでのループFORを開始します
-
ループ内で、行を0に、列を0に設定し、ループ内で、jから0までの別のループFORを開始してcol
-
ループ内で、行を行+行列[i] [j]
として設定します -
ループ内で、jからcolまでの別のループFORを開始します
ループ内で、colからcol + matrix [j] [i] -
ループ内で、IF(行==プリンシパル)をチェックします|| (行==セカンダリ)次に、カウントを1ずつ増やします
-
ループ内で、IF(col ==principal)をチェックします|| (col ==セカンダリ)次に、カウントを1ずつ増やします
-
カウントを返す
-
結果を印刷します。
例
#include <iostream> #define row 3 #define col 3 using namespace std; int diagonal_sum(int matrix[row][col]){ int principal = 0; int secondary = 0; int r = 0; int c = 0; int count = 0; int i = 0, j = 0; for (i = 0, j = col - 1; i < col; i++, j--){ principal += matrix[i][i]; secondary += matrix[i][j]; } for (int i = 0; i < col; i++){ r = 0; c = 0; for (int j = 0; j < col; j++){ r += matrix[i][j]; } for (int j = 0; j < col; j++){ c += matrix[j][i]; } if ((r == principal) || (r == secondary)){ count++; } if ((c == principal) || (c == secondary)){ count++; } } return count; } int main(){ int matrix[row][col] = { { 4, 1, 7 }, { 10, 3, 5 }, { 2, 2, 11}}; cout<<"Count of rows/columns with sum equals to diagonal sum are: "<<diagonal_sum(matrix); return 0; }
出力
上記のコードを実行すると、次の出力が生成されます-
Count of rows/columns with sum equals to diagonal sum are: 2
-
Xとの合計がC++のフィボナッチ数であるノードをカウントします
ノードの重みを数値として持つ二分木を指定します。目標は、その数がフィボナッチ数であるような重みを持つノードの数を見つけることです。フィボナッチ数列の数は次のとおりです。0、1、1、2、3、5、8、13…。n番目の数はの合計です。 (n-1)番目と(n-2)番目。重みが13の場合、それはフィボナッチ数であるため、ノードがカウントされます。 例 入力 temp=1。値を入力した後に作成されるツリーを以下に示します- 出力 Count the nodes whose sum with X is a Fibonacci number are: 3 説明 we are given with
-
C++でbよりも大きいプレフィックス
この問題では、strをn回追加することによって文字列が作成されるように、aとbおよび整数Nのみを含む文字列strが与えられます。私たちのタスクは、aの数がbの数よりも多い部分文字列の総数を出力することです。 問題を理解するために例を見てみましょう Input: aab 2 Output: 9 Explanation: created string is aabaab. Substrings with count(a) > count(b) : ‘a’ , ‘aa’, ‘aab’, ‘aaba&rsquo