Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ดัชนีสมดุล (Equilibrium Index) ของอาร์เรย์ใน C++


ปัญหา

ได้รับอาร์เรย์ arr[] ขนาด n หา index ที่ผลรวมของสมาชิกก่อน index นั้น เท่ากับผลรวมของสมาชิกหลัง index นั้น

เงื่อนไข: sum(arr[0...e-1]) = sum(arr[e+1...n-1])

ตัวอย่าง

อินพุต: arr[] = {5, 1, 2, 8, 3, 4, 1}

เอาต์พุต: 3

คำอธิบาย: arr[0]+arr[1]+arr[2] = 5+1+2 = 8 = arr[4]+arr[5]+arr[6] = 3+4+1

แนวทางแก้ปัญหา

วิธีง่าย: ใช้ Nested Loops วนลูปตรวจสอบทุก index ว่าเป็น equilibrium index หรือไม่

โปรแกรมตัวอย่าง

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

int findEquilibriumIndex(int arr[], int n) {
    for (int i = 0; i < n; ++i) {
        int prevSum = 0, nextSum = 0;
        for (int j = 0; j < i; j++) prevSum += arr[j];
        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