在 C++ 中,最大化表达式 arr[j] – arr[i] + arr[l] – arr[k],其中 i < j < k < l
给定一个整数数组。目标是最大化表达式的值:
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[] 存储数字。 函数 maximizeSum(int arr[], int n) 接收数组及其长度 n 作为输入,并返回 arr[j]-arr[i]+arr[l]-arr[k] 的最大值,其中 i 变量 sum 用于存储 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] 并将其存储在 sum 中 如果当前和 >= maxx,则更新 maxx。 最后返回 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