C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++の指定された行列でA[i][j] =0となるようなインデックス(i、j)の最大差


サイズnxnの行列と、a [i] [j] =0の条件が与えられます。タスクは、a[i][を持つインデックスの最大差を計算することです。 j] =0。したがって、行列には​​少なくとも1つのゼロが必要であると明確に述べることができます。

入力

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

  1. 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

  2. サブツリーがC++プログラムのBSTでもあるようなバイナリツリーの最大サブツリー合計

    この問題では、二分木BTが与えられます。私たちのタスクは、サブツリーがBSTでもあるように、バイナリツリーの最大サブツリー合計を見つけるプログラムを作成することです。 二分木には、各ノードが最大2つの子を持つことができるという特別な条件があります。 二分探索木は、すべてのノードが以下のプロパティに従うツリーです 左側のサブツリーのキーの値は、その親(ルート)ノードのキーの値よりも小さくなっています。 右側のサブツリーのキーの値は、その親(ルート)ノードのキーの値以上です。 問題を理解するために例を見てみましょう 入力 出力 32 説明 ここでは、BS