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

Tối đa hóa arr [j] - arr [i] + arr [l] - arr [k], sao cho i

Chúng tôi được cung cấp với một mảng các số nguyên. Mục đích là tối đa hóa giá trị của biểu thức -

arr [j] -arr [i] + arr [l] -arr [k]; i

Chúng tôi sẽ làm như vậy bằng cách duyệt qua tất cả các phần tử và tính giá trị của biểu thức. Nếu nó được tìm thấy tối đa cho đến nay thì hãy lưu trữ nó và cuối cùng trả lại.

Đầu vào

arr[]= { 1,2,3,4 }

Đầu ra

Maximum value for above expression is : 2

Giải thích - đối với i

arr [j] -arr [i] + arr [l] -arr [k] =2-1 + 4-3 =1 + 1 =2

Đầu vào

arr[]= { 5,5,5,5,5 }

Đầu ra

Maximum value for above expression is : 0

Giải thích - đối với i

arr [j] -arr [i] + arr [l] -arr [k] =5-5 + 5-5 =0

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

  • Mảng số nguyên a [] lưu trữ các số.

  • Hàm MaximumSum (int arr [], int n) nhận mảng và độ dài n của nó làm đầu vào và trả về giá trị tối đa của arr [j] -arr [i] + arr [l] -arr [k] sao cho i

  • Tổng biến được sử dụng để lưu trữ tổng của arr [j] -arr [i] và arr [l] -arr [k].

  • Khởi tạo maxx =arr [0] dưới dạng tổng tối đa ban đầu.

  • Mảng chuyển ngang từ i =0, j =1, k =2, l =3 đến i

  • Đối với mỗi chỉ mục trong i, j, k, l tính arr [j] -arr [i] + arr [l] -arr [k] và lưu trữ thành tổng

  • If current sum> =maxx update maxx.

  • Cuối cùng trả về maxx như kết quả mong muốn.

Ví dụ

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

Đầu ra

Maximized value is :24