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

C++에서 배열의 평형 인덱스

<시간/>

이 문제에서는 n개의 정수 값으로 구성된 배열 arr[]이 제공됩니다. 우리의 임무는 배열의 평형 지수를 찾는 프로그램을 만드는 것입니다.

균형 지수 인덱스 앞의 모든 요소의 합이 인덱스 뒤의 모든 요소의 합과 같은 인덱스입니다.

크기가 n인 배열 arr[]의 경우 평형 지수는 다음과 같은 e입니다.

합계(arr[0… e-1] ) =합(arr[e… n-1])

문제를 이해하기 위해 예를 들어 보겠습니다.

입력: arr[] ={5, 1, 2, 8, 3, 4, 1}

출력: 3

설명:

arr[0] + arr[1] + arr[2] =arr[4] + arr[5] + arr[6]

=> 5 + 1 + 2 =3 + 4 + 1

=> 8 =8

해결 방법:

간단한 접근 방식은 배열의 모든 요소가 평형 수일 수 있는 날씨를 지속적으로 확인하여 요소를 찾는 것입니다.

이를 위해 우리는 중첩 루프를 사용할 것입니다. 배열 요소의 요소를 반복할 외부입니다. 그리고 내부는 배열의 어떤 요소가 평형수를 만들 수 있는지 여부를 확인합니다.

우리 솔루션의 작동을 설명하는 프로그램,

#include <bits/stdc++.h>
using namespace std;

int findEquilibriumIndex(int arr[], int n)
{
   int prevSum, nextSum;

   for (int i = 0; i < n; ++i) {  

      prevSum = 0;
      for (int j = 0; j < i; j++)
         prevSum += arr[j];
      nextSum = 0;
      for (int j = i + 1; j < n; j++)
         nextSum += arr[j];
         
      if (prevSum == nextSum)
         return i;
   }
   return -1;
}

int main() {
   
   int arr[] = {5, 1, 2, 8, 3, 4, 1};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The equilibrium index is "<<findEquilibriumIndex(arr, n);
   return 0;
}

출력 -

The equilibrium index is 3