Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 배열이 균형을 이루도록 추가할 최소값 찾기

<시간/>

n개의 요소가 있는 배열 A가 있다고 가정합니다. 그리고 n은 짝수입니다. 배열의 균형을 유지하는 데 필요한 값을 찾아야 합니다. 배열의 크기가 짝수이므로 두 개의 반을 만들 수 있습니다. 왼쪽 절반의 합과 오른쪽 절반의 합이 균형을 이루어야 합니다. 따라서 배열이 A =[1, 2, 3, 2, 5, 3]인 경우 왼쪽 절반의 합은 6이고 오른쪽 절반의 합은 10입니다. 따라서 배열의 균형을 맞추려면 4가 필요합니다.

작업은 간단합니다. 전반부와 후반부의 합을 찾은 다음 절대 차이를 찾아 반환합니다.

예시

#include<iostream>
#include<cmath>
using namespace std;
int getValueToBalance(int a[], int n) {
   int left_sum = 0;
   for (int i = 0; i < n/2; i++)
   left_sum += a[i];
   int right_sum = 0;
   for (int i = n/2; i < n; i++)
   right_sum += a[i];
   return abs(left_sum - right_sum);
}
int main() {
   int arr[] = {1, 2, 3, 2, 5, 3};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "The number for balancing: " << getValueToBalance(arr, n);
}

출력

The number for balancing: 4