arr [j] – arr [i] + arr [l] – arr [k]を最大化し、C++でi
整数の配列が与えられます。目標は、式の値を最大化することです-
arr [j] -arr [i] + arr [l] -arr [k]; i
これを行うには、すべての要素をトラバースして、式の値を計算します。これまでに最大の結果が見つかった場合は、保存して最後に返します。
入力
arr[]= { 1,2,3,4 }
出力
Maximum value for above expression is : 2
説明 − i の場合
arr [j] -arr [i] + arr [l] -arr [k] =2-1 + 4-3 =1 + 1 =2
入力
arr[]= { 5,5,5,5,5 }
出力
Maximum value for above expression is : 0
説明 − i の任意の値の場合
arr [j] -arr [i] + arr [l] -arr [k] =5-5 + 5-5 =0
以下のプログラムで使用されているアプローチは次のとおりです
-
整数配列a[]は数値を格納します。
-
関数maximizeSum(int arr []、int n)は、配列とその長さnを入力として受け取り、i
-
変数sumは、arr [j]-arr[i]とarr[l]-arr[k]の合計を格納するために使用されます。
-
maxx =arr[0]を初期最大合計として初期化します。
-
配列をi=0、j =1、k =2、l =3からiまでトラバースします。
-
i、j、k、lの各インデックスについて、arr [j] -arr [i] + arr [l] -arr [k]を計算し、合計に格納します
-
現在の合計>=maxxがmaxxを更新する場合。
-
最後に、必要な結果としてmaxxを返します。
例
#include <bits/stdc++.h>
using namespace std;
// function to maximize the sum of selected numbers
int maximizeSum(int arr[], int n) {
int sum=0;
int maxx=arr[0];
for(int i=0;i<n-3;i++)
for(int j=i+1;j<n-2;j++)
for(int k=j+1;k<n-1;k++)
for(int l=k+1;l<n;l++){
sum=arr[j]-arr[i]+arr[l]-arr[k];
if(sum>=maxx)
maxx=sum;
}
return maxx;
}
int main(){
int a[] = {5, 3, 9, 2, 20};
int n = sizeof(a) / sizeof(a[0]);
cout <<"Maximized value is :"<< maximizeSum(a, n);
return 0;
}
出力
Maximized value is :24
-
C++でa+b + c=dとなるような配列で最大のdを見つけます
整数のセットがあるとします。数「d」を見つける必要があります。ここで、d =a + b + cであり、最大化(a + b + c)する必要があり、すべてのa、b、c、およびdがセットに存在します。セットには、少なくとも1つの要素、最大で1000の要素が含まれます。各要素は有限数になります。セットが{2、3、5、7、12}の場合、12が最大です。これは2+3 + 7で表すことができます この問題を解決するために、ハッシュ手法を使用できます。 (a + b)のすべてのペアの合計をハッシュテーブルに格納し、次にすべてのペア(c、d)をトラバースし、検索(d-c)がテーブルに存在するかどうかを確認し
-
n!となるようなxの最大値を見つけます。 %(k ^ x)=0(C ++の場合)
2つの整数nとkがあるとします。 n!のようなxの最大値を見つける必要があります。 mod(k ^ x)=0。したがって、n =5、k =2の場合、出力は3になります。Asn! =120、xの値が異なると、次のようになります- 120 mod 2 ^ 0 =0、120 mod 2 ^ 1 =0、120 mod 2 ^ 2 =0、120 mod 2 ^ 3 =0、120 mod 2 ^ 4 =8、120 mod 2 ^ 5 =24、120 mod 2 ^ 6 =56、120 mod 2 ^ 7=120。x=3の最大値として、結果は0であるため、出力は3です。 これを解決するには、次の手順に従
整数の配列が与えられます。目標は、式の値を最大化することです-
arr [j] -arr [i] + arr [l] -arr [k]; i
これを行うには、すべての要素をトラバースして、式の値を計算します。これまでに最大の結果が見つかった場合は、保存して最後に返します。
説明 − i
arr [j] -arr [i] + arr [l] -arr [k] =2-1 + 4-3 =1 + 1 =2
説明 − i
arr [j] -arr [i] + arr [l] -arr [k] =5-5 + 5-5 =0
整数配列a[]は数値を格納します。
関数maximizeSum(int arr []、int n)は、配列とその長さnを入力として受け取り、i
変数sumは、arr [j]-arr[i]とarr[l]-arr[k]の合計を格納するために使用されます。
maxx =arr[0]を初期最大合計として初期化します。
配列をi=0、j =1、k =2、l =3からi
i、j、k、lの各インデックスについて、arr [j] -arr [i] + arr [l] -arr [k]を計算し、合計に格納します
現在の合計>=maxxがmaxxを更新する場合。
最後に、必要な結果としてmaxxを返します。入力
arr[]= { 1,2,3,4 }
出力
Maximum value for above expression is : 2
入力
arr[]= { 5,5,5,5,5 }
出力
Maximum value for above expression is : 0
以下のプログラムで使用されているアプローチは次のとおりです
例
#include <bits/stdc++.h>
using namespace std;
// function to maximize the sum of selected numbers
int maximizeSum(int arr[], int n) {
int sum=0;
int maxx=arr[0];
for(int i=0;i<n-3;i++)
for(int j=i+1;j<n-2;j++)
for(int k=j+1;k<n-1;k++)
for(int l=k+1;l<n;l++){
sum=arr[j]-arr[i]+arr[l]-arr[k];
if(sum>=maxx)
maxx=sum;
}
return maxx;
}
int main(){
int a[] = {5, 3, 9, 2, 20};
int n = sizeof(a) / sizeof(a[0]);
cout <<"Maximized value is :"<< maximizeSum(a, n);
return 0;
}
出力
Maximized value is :24
-
C++でa+b + c=dとなるような配列で最大のdを見つけます
整数のセットがあるとします。数「d」を見つける必要があります。ここで、d =a + b + cであり、最大化(a + b + c)する必要があり、すべてのa、b、c、およびdがセットに存在します。セットには、少なくとも1つの要素、最大で1000の要素が含まれます。各要素は有限数になります。セットが{2、3、5、7、12}の場合、12が最大です。これは2+3 + 7で表すことができます この問題を解決するために、ハッシュ手法を使用できます。 (a + b)のすべてのペアの合計をハッシュテーブルに格納し、次にすべてのペア(c、d)をトラバースし、検索(d-c)がテーブルに存在するかどうかを確認し
-
n!となるようなxの最大値を見つけます。 %(k ^ x)=0(C ++の場合)
2つの整数nとkがあるとします。 n!のようなxの最大値を見つける必要があります。 mod(k ^ x)=0。したがって、n =5、k =2の場合、出力は3になります。Asn! =120、xの値が異なると、次のようになります- 120 mod 2 ^ 0 =0、120 mod 2 ^ 1 =0、120 mod 2 ^ 2 =0、120 mod 2 ^ 3 =0、120 mod 2 ^ 4 =8、120 mod 2 ^ 5 =24、120 mod 2 ^ 6 =56、120 mod 2 ^ 7=120。x=3の最大値として、結果は0であるため、出力は3です。 これを解決するには、次の手順に従