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.
Giải thích - đối với i
arr [j] -arr [i] + arr [l] -arr [k] =2-1 + 4-3 =1 + 1 =2
Giải thích - đối với i
arr [j] -arr [i] + arr [l] -arr [k] =5-5 + 5-5 =0
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. Đầu vào
arr[]= { 1,2,3,4 }
Đầu ra
Maximum value for above expression is : 2
Đầu vào
arr[]= { 5,5,5,5,5 }
Đầu ra
Maximum value for above expression is : 0
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
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