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