เราได้รับอาร์เรย์ของจำนวนเต็ม เป้าหมายคือการเพิ่มมูลค่าของนิพจน์สูงสุด −
arr[j]-arr[i] + arr[l]-arr[k]; i
เราจะทำโดยการสำรวจองค์ประกอบทั้งหมดและคำนวณค่าของนิพจน์ หากพบสูงสุดจนถึงตอนนี้ ให้จัดเก็บและส่งคืนในตอนท้าย
คำอธิบาย − สำหรับ i
arr[j]-arr[i]+arr[l]-arr[k]=2-1+4-3=1+1=2
คำอธิบาย − สำหรับ i
arr[j]-arr[i]+arr[l]-arr[k]=5-5+5-5=0
อาร์เรย์จำนวนเต็ม a[] เก็บตัวเลข
ฟังก์ชัน maximumSum(int arr[], int n) รับอาร์เรย์และความยาว n เป็นอินพุตและส่งกลับค่าสูงสุดของ arr[j]-arr[i]+arr[l]-arr[k] เพื่อให้ i
ผลรวมตัวแปรใช้เพื่อเก็บผลรวมของ arr[j]-arr[i] และ arr[l]-arr[k].
เริ่มต้น maxx=arr[0] เป็นผลรวมสูงสุดเริ่มต้น
อาร์เรย์การเคลื่อนที่จาก i=0, j=1,k=2, l=3 ถึง i
สำหรับแต่ละดัชนีใน i,j,k,l คำนวณ arr[j]-arr[i]+arr[l]-arr[k] และเก็บไว้ในผลรวม
หากผลรวมปัจจุบัน>=maxx อัปเดตสูงสุด
ในที่สุดผลตอบแทนสูงสุดตามผลลัพธ์ที่ต้องการอินพุต
arr[]= { 1,2,3,4 }
ผลลัพธ์
Maximum value for above expression is : 2
อินพุต
arr[]= { 5,5,5,5,5 }
ผลลัพธ์
Maximum value for above expression is : 0
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
ตัวอย่าง
#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;
}
ผลลัพธ์
Maximized value is :24