इस समस्या में, हमें एक सरणी arr[] दी गई है जिसमें n पूर्णांक मान होते हैं। हमारा कार्य सरणी के संतुलन सूचकांक (equilibrium index) को खोजने के लिए एक प्रोग्राम बनाना है।
संतुलन सूचकांक वह सूचकांक है जिस पर सूचकांक से पहले के सभी तत्वों का योग सूचकांक के बाद के सभी तत्वों के योग के बराबर होता है।
आकार n की सरणी arr[] के लिए, संतुलन सूचकांक e ऐसा है कि:
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] = 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