合計が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