Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में भिन्न सम संख्या वाले उपसमुच्चय गिनें

हमें सकारात्मक पूर्णांकों की एक सरणी दी गई है। लक्ष्य एक सरणी में संख्याओं के उपसमुच्चय को इस प्रकार खोजना है कि प्रत्येक उपसमुच्चय में अलग-अलग सम संख्याएँ हों। समान तत्वों वाले सभी सेटों की गणना 1 के रूप में की जाएगी। [2,4,6] और [6,2,4] एक ही सेट हैं।

आइए उदाहरणों के साथ समझते हैं

इनपुट - एआर [] ={1,3,5,7,8,3,2};

आउटपुट −भिन्न सम संख्या वाले उपसमुच्चय की संख्या है − 3

स्पष्टीकरण - सबसेट होंगे - [2], [8], [2,8]

इनपुट - एआर [] ={2,4,6};

आउटपुट −भिन्न सम संख्या वाले उपसमुच्चय की संख्या है − 7

स्पष्टीकरण - सबसेट होंगे - [2], [4], [6], [2,4], [2,6], [4,6], [2,4,6]

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

हम सरणी में सभी सम संख्याओं का एक सेट बनाते हैं। यह अलग-अलग सम संख्याओं की गिनती देता है। फ़ॉर्मूला 2 सम गणना . होगा - 1

  • संख्याओं की एक सरणी लें एआर []।

  • Functionsubset_even(int arr[], int size) संख्याओं की एक सरणी लेता है और सबसेट को अलग-अलग सम संख्याओं के साथ लौटाता है।

  • प्रारंभिक गणना 0 के रूप में लें।

  • सम संख्याओं के लिए एक unordered_set un_set बनाएं।

  • ट्रैवर्स एआर [] लूप के लिए उपयोग कर रहा है। i=0 से i<लंबाई तक।

  • अगर गिरफ्तारी [i]% 2 ==0, यह सम है। un_set में डालें।

  • गिनती लें=un_set.size() // अलग-अलग सम संख्याएं।

  • अपडेट गिनती=पाउ(2,गिनती) - 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]);
      }
   }
   unordered_set<int>:: iterator 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

  1. C++ में अधिकतम सन्निहित सम संख्याओं की संख्या ज्ञात कीजिए

    मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। हमें दिए गए सरणी में सन्निहित सम संख्याओं की अधिकतम संख्या ज्ञात करनी है। तो अगर एरे ए =[1, 2, 3, 4, 6, 8, 7] की तरह है, तो गिनती 3 होगी। हम इसे आसानी से हल कर सकते हैं। हमें दो गणना चर की आवश्यकता है एक है max_current, और दूसरा है max_till_now।

  1. सी ++ में एक क्रमबद्ध सरणी में पूर्ण विशिष्ट गणना?

    एक सरणी एक ही डेटा प्रकार के तत्वों का एक संग्रह है। एक क्रमबद्ध सरणी एक सरणी है जिसमें तत्वों को आरोही या अवरोही क्रम में संग्रहीत किया जाता है। विशिष्ट गणना उन तत्वों की संख्या है जो समान नहीं हैं। एब्सोल्यूट डिफरेंट काउंट तत्वों के निरपेक्ष मान की अलग गिनती है यानी बिना चिह्न वाले तत्व (अहस्ताक

  1. सी ++ में दोनों तरफ सम या विषम संख्याओं की समान गणना के साथ ऐरे इंडेक्स

    यहां हम एक समस्या देखेंगे, मान लीजिए कि एक सरणी दी गई है। एन तत्व हैं। हमें एक सूचकांक ज्ञात करना है, जहाँ इसके बायीं ओर की सम संख्याओं की बारंबारता और इसके दायीं ओर की सम संख्याओं की बारंबारता समान हो, या इसके बायीं ओर की विषम संख्याओं की आवृत्ति इसके दाईं ओर की विषम संख्याओं की आवृत्ति के समान हो।