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