हमें धनात्मक पूर्णांकों की एक सरणी दी गई है। लक्ष्य सरणी में संख्याओं के उन सबसेट को ढूंढना है जिनमें प्रत्येक सबसेट में विशिष्ट सम संख्याएँ हों। समान तत्वों वाले सभी सेट को 1 के रूप में गिना जाएगा। [2,4,6] और [6,2,4] समान सेट हैं।
उदाहरण सहित समझ
इनपुट - arr[] = {1,3,5,7,8,3,2 };
आउटपुट - विशिष्ट सम संख्याओं वाले सबसेट की संख्या: 3
व्याख्या - सबसेट होंगे: [2], [8], [2,8]
इनपुट - arr[] = {2,4,6 };
आउटपुट - विशिष्ट सम संख्याओं वाले सबसेट की संख्या: 7
व्याख्या - सबसेट होंगे: [2], [4], [6], [2,4], [2,6], [4,6], [2,4,6]
प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम सरणी में सभी सम संख्याओं का एक सेट बनाते हैं। यह विशिष्ट सम संख्याओं की संख्या देता है। सूत्र होगा 2^even_count - 1।
- संख्याओं की एक सरणी
arr[]लें। - फंक्शन
subset_even(int arr[], int size)संख्याओं की सरणी लेता है और विशिष्ट सम संख्याओं वाले सबसेट लौटाता है। - प्रारंभिक काउंट 0 लें।
- सम संख्याओं के लिए एक
unordered_set<int> un_setबनाएं। - फॉर लूप का उपयोग करके
arr[]को ट्रैवर्स करें। i=0 से i<length तक। - यदि
arr[i] % 2 == 0, यह सम है।un_setमें डालें। count = un_set.size()लें // विशिष्ट सम संख्याएँ।count = pow(2, count) - 1अपडेट करें।- परिणाम के रूप में काउंट लौटाएँ।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int subset_even(int arr[], int size) {
int count = 0;
unordered_set<int> un_set;
for (int i = 0; i < size; i++) {
if (arr[i] % 2 == 0) {
un_set.insert(arr[i]);
}
}
count = un_set.size();
count = pow(2, count) - 1;
return count;
}
int main() {
int arr[] = {10, 4, 21, 3, 5, 7, 6, 8};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Count of subsets having distinct even numbers are: " << subset_even(arr, size);
return 0;
}
आउटपुट
Count of subsets having distinct even numbers are: 15