이 문제에서는 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