C++の指定された行列でA[i][j] =0となるようなインデックス(i、j)の最大差
入力
int matrix[][] = { {0, 1, 1}, {0, 0, 0}, {4, 5, 1}}
出力 -与えられた行列でA[i][j] =0となるようなインデックス(i、j)の最大差は-
説明 −マトリックス[0] [0]、マトリックス[1] [0]、マトリックス[1] [1]、マトリックス[1][2]に要素0があります。したがって、インデックスの最大差は、要素0を持つmatrix [1] [0]になります。したがって、最大差は1です。
入力
int matrix[][] = { {0, 1, 1}, {0, 2, 9}, {4, 0, 1}}
出力 −与えられた行列のA [i] [j] =0となるようなインデックス(i、j)の最大差は−
説明 −マトリックス[0] [0]、マトリックス[1] [0]、およびマトリックス[2][1]に要素0があります。したがって、インデックスの最大差は、要素0を持つmatrix[1][0]とmatrix[2][1]になります。したがって、最大差は1です。
以下のプログラムで使用されているアプローチは次のとおりです
-
任意のインデックスに少なくとも1つの1が含まれるように行列を入力します。
-
行と列の最大サイズ、つまりnxnのサイズを定義します。
-
最大差値を格納する一時変数を取ります。
-
0からrow_sizeまでのループ開始
-
ループ内で、0からcol_sizeまでの別のループを開始します
-
IF行列[i][j]=0
を確認します -
次に、最大値をインデックス間の差としての最大値に設定します。
-
最大値を返す
-
結果を印刷します。
例
#include <bits/stdc++.h> using namespace std; #define row 3 #define col 3 //find maximum difference int maximum(int matrix[row][col]){ int max_val = 0; for (int i = 0; i < row; i++){ for (int j = 0; j < col; j++){ if (matrix[i][j] == 0){ max_val = max(max_val, abs(i - j)); } } } return max_val; } int main(){ int matrix[row][col] = { { 1, 2, 0}, { 0, 4, 0}, { 0, 1, 0}}; cout<<"Maximum difference of indices with A[i][j] = 0 is: "<<maximum(matrix); return 0; }
出力
上記のコードを実行すると、次の出力が得られます-
Maximum difference of indices with A[i][j] = 0 is: 2
-
C++で指定された条件を満たすサブセットをカウントします
数値の配列と整数xを入力として指定します。目標は、arr []のすべてのサブセットを見つけて、そのセットの個々の要素とそれらの合計をxで完全に割り切れるようにすることです。 例 入力 arr[] = {1,2,3,4,5,6} x=3 出力 Count of subsets that satisfy the given condition :3 説明 The subsets will be: [3], [6], [3,6] 入力 arr[] = {1,2,3,4,5,6} x=4 出力 Count of subsets that satisfy the given condition :1
-
サブツリーがC++プログラムのBSTでもあるようなバイナリツリーの最大サブツリー合計
この問題では、二分木BTが与えられます。私たちのタスクは、サブツリーがBSTでもあるように、バイナリツリーの最大サブツリー合計を見つけるプログラムを作成することです。 二分木には、各ノードが最大2つの子を持つことができるという特別な条件があります。 二分探索木は、すべてのノードが以下のプロパティに従うツリーです 左側のサブツリーのキーの値は、その親(ルート)ノードのキーの値よりも小さくなっています。 右側のサブツリーのキーの値は、その親(ルート)ノードのキーの値以上です。 問題を理解するために例を見てみましょう 入力 出力 32 説明 ここでは、BS