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

サブアレイの合計がC++でも等しくなるようなサブアレイの最大長


整数の配列Arr[]が与えられます。目標は、要素の合計が偶数であるArr[]の最長のサブ配列を見つけることです。つまり、サブアレイの要素の合計は偶数であり、そのサブアレイの長さは最長です。

入力 − arr []={2,3,5,2,6,7}。

出力 −サブアレイの最大長− 4

説明 −サブアレイの最大長は{5,2,6,7}です。合計は20で、偶数です。

入力 − arr []={5,7,7,3,4}。

出力 −サブアレイの最大長− 4

説明 −サブアレイの最大長は{5,7,7,3}です。合計は22で、偶数です。

以下のプログラムで使用されているアプローチは次のとおりです

  • 整数配列Arr[]は、整数を格納するために使用されます。

  • 可変サイズは、配列の長さを格納するために使用されます。

  • 関数Length(int arr [])は、配列の合計が偶数であることを確認します。 Lengは、サブアレイの長さを格納するために使用されます。

  • 配列の長さnを返す場合でも、配列の合計を計算します。

  • 最初の要素から始めて、配列全体をトラバースします。奇数の要素が見つかった場合は、arr[i]を除く両方の半分の長さを見つけます。

  • サブアレイの長さの最大長を返します。

#include<iostream<
int Length(int arr[], int n){
   int sum = 0, leng = 0;
   // if whole array is even
   for (int i = 0; i < n; i++)
      sum += arr[i];
   if (sum % 2 == 0) // total sum is already even
      return n;
   // Find an index i such the a[i] is odd
   // and compare length of both halfs excluding
   // a[i] to find max length subarray
   for (int i = 0; i < n; i++) {
      if (arr[i] % 2 == 1)
         leng = i>n-i-1?i:n-i-1;
   }
   return leng;
}
int main(){
   int Arr[] = { 1, 2, 6, 2, 4,2 };
   int size = 6;
   printf("Maximum length of subarray such that sum of the subarray is even: %d",Length(Arr, size));
return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Maximum length of subarray such that sum of the subarray is even : 5

  1. 最大サブアレイサイズ。C++プログラムでは、そのサイズのすべてのサブアレイの合計がk未満になります。

    この問題では、n個の正の整数と整数kで構成される配列arr[]が与えられます。私たちのタスクは、Maximumsubarrayサイズを見つけるプログラムを作成して、そのサイズのすべてのサブアレイの合計がk未満になるようにすることです。 問題の説明 −配列の要素からサイズで作成されたすべてのサブ配列が、k以下の要素の合計を持つように、サブ配列の最大サイズを見つける必要があります。 問題を理解するために例を見てみましょう 入力 arr[n] = {4, 1, 3, 2}, k = 9 出力 3 説明 サイズ3のすべてのサブアレイとそれらの合計- {4, 1, 3} = 8 {1, 3, 2

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

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