サブアレイの合計が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