এই সমস্যায় আমাদের একটি অ্যারে arr[] দেওয়া হয়েছে যাতে n সংখ্যক পূর্ণসংখ্যা মান রয়েছে। আমাদের কাজ হলো অ্যারের ইক্যুিলিব্রিয়াম সূচক বের করার প্রোগ্রাম তৈরি করা।
ইক্যুিলিব্রিয়াম সূচক হলো वह সূচক যেখানে সূচকের আগের সব উপাদানের যোগফল সূচকের পরে থাকা সব উপাদানের যোগফলের সমান।
আকার n এর arr[] অ্যারে জন্য, ইক্যুিলিব্রিয়াম সূচক e এমন যে,
sum (arr[0… e-1] ) = sum (arr[e… n-1])
উদাহরণ দিয়ে বুঝি
ইনপুট: arr[] = {5, 1, 2, 8, 3, 4, 1}
আউটপুট: ৩
ব্যাখ্যা:
arr[0] + arr[1] + arr[2] = arr[4] + arr[5] + arr[6]
=> 5 + 1 + 2 = 3 + 4 + 1
=> 8 = 8
সমাধানের পদ্ধতি
একটি সহজ পদ্ধতি হলো প্রতিটি উপাদান চেক করে দেখা যে কি কোনো উপাদান ইক্যুিলিব্রিয়াম নম্বর হতে পারে। এর জন্য নেস্টেড লুপ ব্যবহার করা হবে। বাহ্যিক লুপ অ্যারের উপাদানগুলোতে ইটারেট করবে। এবং অভ্যন্তরীণ লুপ চেক করবে কোনো উপাদান ইক্যুিলিব্রিয়াম নম্বর বানানো যায় কিনা।
সমাধান minhaj করার প্রোগ্রাম
#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