我们得到了一个整数数组。目标是最大化表达的价值 -
arr[j]-arr[i] + arr[l]-arr[k] ; i<j<k<l 元素索引
我们将通过遍历所有元素并计算表达式的值来做到这一点。如果到目前为止找到最大值,则将其存储并最后返回。
arr[]= { 1,2,3,4 }输出结果
Maximum value for above expression is : 2
解释- 对于 i<j<k<l, i=0, j=1, k=2, l=3
arr[j]-arr[i]+arr[l]-arr[k]= 2-1+4-3=1+1=2
arr[]= { 5,5,5,5,5 }输出结果
Maximum value for above expression is : 0
说明- 对于 i<j<k<l,对于 i,j,k,l 的任何值
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<j<k <l.
变量 sum 用于存储 arr[j]-arr[i] 和 arr[l]-arr[k] 的和。
将 maxx=arr[0] 初始化为初始最大和。
遍历数组从 i=0, j=1,k=2, l=3 到 i<n-3,j<n-2,k<n-1 and l<n
对于 i,j,k,l 中的每个索引,计算 arr[j]-arr[i]+arr[l]-arr[k] 并存储在 sum
如果当前总和>=maxx 更新 maxx。
最后返回 maxx 作为所需的结果。
#include <bits/stdc++.h> using namespace std; // 最大化所选数字总和的函数 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 <<"最大值为:"<< maximizeSum(a, n); return 0; }输出结果
最大值为:24