정수 배열이 제공됩니다. 목표는 표현의 가치를 극대화하는 것입니다 -
arr[j]-arr[i] + arr[l]-arr[k]; i
우리는 모든 요소를 순회하고 expression의 값을 계산함으로써 그렇게 할 것입니다. 지금까지 찾은 것이 최대값이면 저장하고 마지막에 반환합니다.
설명 - 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을 입력으로 취하고 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]를 계산하고 합계에 저장
현재 합계>=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