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