समस्या कथन
N पूर्णांकों की एक सरणी arr[] दी गई है। हमें एक प्रोग्राम लिखना है जो सरणी से हटाए जाने वाले तत्वों की न्यूनतम संख्या ज्ञात करे, ताकि शेष तत्वों का योग सम हो।
उदाहरण
यदि इनपुट सरणी {10, 20, 30, 5} है तो हमें एक तत्व हटाने की आवश्यकता है यानी 5 को सरणी का योग सम बनाने के लिए
एल्गोरिदम
1. किसी भी संख्या में सम संख्याओं का योग हमेशा सम होता है 2. विषम संख्याओं की विषम संख्या का योग हमेशा विषम होता है 3. विषम संख्याओं का सम बार योग हमेशा सम होता है 4. सरणी में विषम तत्वों की संख्या गिनें। यदि सरणी में विषम तत्वों की संख्या सम है, तो हमें सरणी से किसी तत्व को हटाने की आवश्यकता नहीं है लेकिन यदि सरणी में विषम तत्वों की संख्या विषम है तो सरणी से किसी एक विषम तत्व को हटाकर
उदाहरण
#include <bits/stdc++.h> using namespace std; int getMinRemovals(int *arr, int n) { int cnt = 0; for (int i = 0; i < n; ++i) { if (arr[i] % 2 == 1) { ++cnt; } } return (cnt % 2 == 0) ? 0 : 1; } int main() { int arr[] = {10, 20, 30, 5}; int n = sizeof(arr) / sizeof(arr[0]); cout << "न्यूनतम आवश्यक निष्कासन = " << getMinRemovals(arr, n) << endl; return 0; }जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है
आउटपुट
न्यूनतम आवश्यक निष्कासन = 1