Computer >> Máy Tính >  >> Lập trình >> C ++

Chỉ số cân bằng của một mảng trong C ++

Trong bài toán này, chúng ta được cung cấp một mảng arr [] gồm n giá trị nguyên. Nhiệm vụ của chúng ta là tạo một chương trình để tìm chỉ số cân bằng của một mảng.

Chỉ số cân bằng là chỉ số mà tại đó tổng của tất cả các phần tử trước chỉ mục bằng với tổng của tất cả các phần tử sau chỉ mục.

Đối với mảng arr [] có kích thước n, chỉ số cân bằng là e sao cho,

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

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào: arr [] ={5, 1, 2, 8, 3, 4, 1}

Đầu ra: 3

Giải thích:

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

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

=> 8 =8

Phương pháp tiếp cận giải pháp:

Một cách tiếp cận đơn giản sẽ là tìm phần tử bằng cách liên tục kiểm tra thời tiết bất kỳ phần tử nào của mảng có thể là một số cân bằng.

Đối với điều này, chúng tôi sẽ sử dụng các vòng lặp lồng nhau. Bên ngoài để lặp qua các phần tử của các phần tử của mảng. Và bên trong sẽ kiểm tra xem bất kỳ phần tử nào của mảng có thể là số cân bằng hay không.

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#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;
}

Đầu ra -

The equilibrium index is 3