इस समस्या में, हमें n धनात्मक मानों वाली एक सरणी arr[] दी गई है। हमारा कार्य सरणी के शेष सभी तत्वों के योग के बराबर तत्व को ढूंढना है।
कोड विवरण: हमें उस तत्व को ढूंढना है जिसका मान सरणी के सभी तत्वों के योग के बराबर है सिवाय उस तत्व के।
उदाहरण से समझते हैं:
इनपुट: arr[] = {5, 4, 17, 1, 7}
आउटपुट: 17
व्याख्या:
शेष तत्वों का योग (5 + 4 + 1 + 7) = 17 है, जो शेष तत्व 17 के बराबर है।
समाधान दृष्टिकोण:
समस्या का एक सरल समाधान इस तथ्य का उपयोग करना है कि सरणी के सभी तत्वों का योग दिए गए तत्व का दोगुना होता है। इसके लिए हम इन चरणों का पालन करेंगे:
चरण 1: सरणी के सभी तत्वों का योग निकालें।
चरण 2: सरणी के प्रत्येक तत्व के लिए लूप चलाएं,
चरण 2.1: यदि arr[i] == sum/2।
चरण 2.1.1: यदि सत्य, तो फ्लैग = 1, लूप तोड़ें।
चरण 2.2.1: यदि असत्य, तो छोड़ दें।
चरण 3: यदि फ्लैग == 1, तो arr[i] प्रिंट करें
चरण 4: अन्यथा, प्रिंट करें "ऐसा कोई तत्व नहीं मिला!"।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम:
उदाहरण
#include <iostream>
using namespace std;
void findElementInArray(int arr[], int n) {
int arraySum = 0;
int flag = 0, i;
for (i = 0; i < n; i++)
arraySum += arr[i];
for (i = 0; i < n; i++)
if ((2 * arr[i]) == arraySum) {
flag = 1;
break;
}
if (flag)
cout << arr[i];
else
cout << "No such element is found!";
}
int main() {
int n = 5;
int arr[n] = {5, 4, 7, 1, 17};
findElementInArray(arr, n);
return 0;
}
आउटपुट:
17