C ++の1番目と2番目の配列からX要素とY要素を選択して、X+Y要素の合計を最大化します。
それぞれサイズNの2つの配列について、タスクは、配列1からX要素を選択し、配列2からY要素を選択して、最大の合計を見つけることです。
例を使用して、私たちがしなければならないことを理解しましょう-
入力
arr1 = {1,2,3,4,5} ; X=2 arr2 = {1,3,5,2,7}; Y=3
出力
Maximum sum here is : 24
説明 − arr1から2つの番号を選択し、arr2から3つの番号を選択しています。 arr1の最大の2は4,5であり、arr2の最大の3は3,5,7です。これらの5つの要素の合計は24であり、要件に従って最大になります。
入力
arr1 = {10,13,16,14}; X=1 arr2 = {4,1,2,1}; Y=2
出力
Maximum sum here is : 22
説明 − arr1から1つの番号を選択し、arr2から2つの番号を選択しています。 arr1の最大値は16で、arr2の最大値2は4,2です。これらの5つの要素の合計は22であり、要件に従って最大になります。
以下のプログラムで使用されるアプローチは次のとおりです
-
入力配列arr1[]とarr2[]、およびXとYの値を取得します。
-
2つの配列を昇順で並べ替えます。
-
arr1から最後のX要素を取得し、arr2からYを取得します。これらが最も高くなるためです。
-
最後に、ステップ3で選択した要素の合計が最大になるため、これを返します。
-
注:sort(arr []、int)は、ソートされた配列を返すと想定されています。
例
#include <iostream> using namespace std; int max_sum(int arr1[],int arr2[], int length,int X,int Y){ //for sorting the array sort(arr1,length); sort(arr2,length); int sum=0; int i; //adding last X elements from arr1 and last Y elements from arr2 for(i=0;i<X;i++){ sum+=arr1[length-i-1]; } for(i=0;i<Y;i++){ sum+=arr2[length-i-1]; } return(sum); } // Driver program int main(){ int arr1[]={1,1,1,3,7}; int arr2[]={1,1,2,3,5}; int x=3,y=2; printf( "Maximized sum of X+Y elements by picking X and Y elements from 1st and 2nd array is %d",max_sum(arr1,arr2,5,x,y)); return 0; }
出力
上記のコードを実行すると、次の出力が得られます-
Maximized sum of X+Y elements by picking X and Y elements from 1st and 2nd array is 19
-
C++で配列内の最小要素と2番目に小さい要素を検索します
n個の要素の配列があるとします。配列内で最初、2番目に小さい要素を見つける必要があります。最初の最小値は配列の最小値であり、2番目に小さい値は最小値ですが、最初の最小値よりも大きくなります。 各要素をスキャンしてから要素を確認し、この問題を解決するために1番目と2番目に小さい要素の条件を関連付けます。 例 #include<iostream> using namespace std; int getTwoSmallest(int arr[], int n) { int first = INT_MAX, sec = INT_MAX; &nb
-
C ++の配列のすべての要素にXOR演算を適用して、配列の合計を最小化する
説明 サイズの配列が与えられた場合、N。Xと配列の各要素を使用してXOR演算を実行するときに、配列要素の合計が最小になるように要素Xを見つけます。 If input array is: arr [] = {8, 5, 7, 6, 9} then minimum sum will be 30 Binary representation of array elments are: 8 : 1000 5 : 0101 7 : 0111 6 : 0101 9 : 1001 If X = 5 then after performing XOR sum will be 30: 8 ^ 5 = 13 5