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

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

  1. 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

  2. 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