Computer >> Máy Tính >  >> Lập trình >> C ++

Tối đa hóa tổng các phần tử X + Y bằng cách chọn các phần tử X và Y từ mảng thứ nhất và thứ hai trong C ++


Đối với hai mảng đã cho, mỗi mảng có kích thước N, nhiệm vụ là tìm tổng lớn nhất bằng cách chọn X phần tử từ mảng 1 và phần tử Y từ mảng 2.

Bây giờ chúng ta hãy hiểu những gì chúng ta phải làm bằng cách sử dụng một ví dụ -

Đầu vào

arr1 = {1,2,3,4,5} ; X=2
arr2 = {1,3,5,2,7}; Y=3

Đầu ra

Maximum sum here is : 24

Giải thích - Chúng tôi đang chọn 2 số từ arr1 và 3 từ arr2. 2 lớn nhất của arr1 là 4,5 và 3 lớn nhất của arr2 là 3,5,7. Tổng cộng của 5 phần tử này là 24, đây là mức tối đa theo yêu cầu.

Đầu vào

arr1 = {10,13,16,14}; X=1
arr2 = {4,1,2,1}; Y=2

Đầu ra

Maximum sum here is : 22

Giải thích - Chúng tôi đang chọn 1 số từ arr1 và 2 từ arr2. Lớn nhất của arr1 là 16 và 2 lớn nhất của arr2 là 4,2. Tổng cộng của 5 phần tử này là 22, tối đa theo yêu cầu.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Lấy mảng đầu vào arr1 [] và arr2 [] và các giá trị cho X và Y ..

  • Sắp xếp hai mảng theo thứ tự tăng dần.

  • Lấy X phần tử cuối cùng từ arr1 và Y từ arr2 vì chúng sẽ là phần tử cao nhất.

  • Cuối cùng, chúng tôi trả về tổng các phần tử đã chọn ở bước 3 vì nó sẽ là giá trị lớn nhất.

  • Lưu ý:sort (arr [], int) được giả sử để trả về mảng đã sắp xếp.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -

Maximized sum of X+Y elements by picking X and Y elements from 1st and 2nd array is 19