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

C++ प्रोग्राम: सभी सबसेट जोड़ियां उत्पन्न करना जिनका यूनियन सुपरसेट बनाता है


यह C++ प्रोग्राम दिए गए सेट के सभी संभावित सबसेट जोड़े उत्पन्न करता है जिनका यूनियन (union) मूल सेट (सुपरसेट) बनाता है। प्रत्येक जोड़े में दो पूरक (complementary) सबसेट होते हैं।

एल्गोरिदम

शुरुआत
  1. फंक्शन UnionSet():
     आर्गुमेंट्स: a[] = ऐरे, n = तत्वों की संख्या
     बॉडी:
     1) 0 से 2^(n-1)-1 तक बाइनरी कोड जनरेट करें सभी 2^(n-1) जोड़ियों के लिए।
     2) प्रत्येक कोड के लिए, ऐरे के उन तत्वों को प्रिंट करें जिनके संबंधित इंडेक्स में 0 या 1 है।
     3) उन्हें दो अलग-अलग सेट में प्रिंट करें जिनका यूनियन सुपरसेट देता है।
समाप्ति

उदाहरण कोड

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

void display(char code[], int a[], int n) {
    int i;
    cout << "\t{ ";
    for (i = 0; i < n; i++) {
        if (code[i] == '1')
            cout << a[i] << " ";
    }
    cout << "} { ";
    for (i = 0; i < n; i++) {
        if (code[i] == '0')
            cout << a[i] << " ";
    }
    cout << "}\n";
}

void UnionSet(int a[], int n) {
    int i, r, l;
    char binary[n];
    r = pow(2, n-1);
    
    for (i = 0; i < n; i++) binary[i] = '0';
    
    for (i = 0; i < r; i++) {
        display(binary, a, n);
        l = n - 1;
        h:
        if (binary[l] == '0')
            binary[l] = '1';
        else {
            binary[l] = '0';
            l--;
            goto h;
        }
    }
}

int main() {
    int i, n;
    cout << "\nEnter the number of elements: ";
    cin >> n;
    int a[n];
    cout << "\n";
    for (i = 0; i < n; i++) {
        cout << "Enter " << i+1 << " element: ";
        cin >> a[i];
    }
    cout << "\nThe possible subset pairs which on union generates the superset, are: \n";
    UnionSet(a, n);
    return 0;
}

आउटपुट

Enter the number of elements: 4
Enter 1 element: 4
Enter 2 element: 3
Enter 3 element: 2
Enter 4 element: 1

The possible subset pairs which on union generates the superset, are:
{ } { 4 3 2 1 }
{ 1 } { 4 3 2 }
{ 2 } { 4 3 1 }
{ 2 1 } { 4 3 }
{ 3 } { 4 2 1 }
{ 3 1 } { 4 2 }
{ 3 2 } { 4 1 }
{ 3 2 1 } { 4 }

व्याख्या: n तत्वों के सेट के लिए, 2^(n-1) ऐसे अनोखे जोड़े होते हैं। प्रोग्राम बाइनरी काउंटिंग का उपयोग करता है जहां प्रत्येक बिट एक तत्व की उपस्थिति (1) या अनुपस्थिति (0) को दर्शाता है। पहला सेट 1-बिट्स दिखाता है, दूसरा 0-बिट्स दिखाता है।

  1. - C++ में प्रोग्राम को मिलीसेकंड के लिए स्लीप करना

    C++ में प्रोग्राम को निर्दिष्ट मिलीसेकंड के लिए स्लीप (पॉज) करने के कई तरीके हैं। आधुनिक C++ (C++11+) में <chrono> और <thread> का उपयोग करना सबसे अच्छा है। विधि 1: C++11 std::this_thread::sleep_for (सिफारिश) #include <iostream> #include <chrono> #include <thread> usin

  1. - C++ प्रोग्राम: दिए गए सेट के सभी सबसेट को लेक्सिकोग्राफिक ऑर्डर में जनरेट करें

    यह दिए गए सेट के सभी सबसेट को लेक्सिकोग्राफिक ऑर्डर में जनरेट करने का C++ प्रोग्राम है। यह एल्गोरिदम दिए गए ऐरे के सेट से प्रत्येक लंबाई के सभी संभावित संयोजन को बढ़ते क्रम में प्रिंट करता है। इस एल्गोरिदम की समय जटिलता O(n*(2^n)) है। एल्गोरिदम Begin    प्रत्येक लंबाई i के लिए GenAllSubse

  1. - स्ट्रिंग के सभी सबसेट्स खोजने के लिए Java प्रोग्राम

    इस लेख में, हम समझेंगे कि स्ट्रिंग के सभी सबसेट्स कैसे खोजें। String एक डेटा प्रकार है जिसमें एक या अधिक कैरेक्टर्स होते हैं और यह डबल कोट्स ( ) में संलग्न होता है। स्ट्रिंग का एक भाग या उपसमूह सबस्ट्रिंग कहलाता है। नीचे इसका प्रदर्शन है: मान लीजिए हमारा इनपुट है: स्ट्रिंग परिभाषित है: JVM वांछि