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

C++ प्रोग्राम: बाइनरी काउंटिंग मेथड द्वारा सबसेट उत्पन्न करना


यह C++ प्रोग्राम बाइनरी काउंटिंग मेथड का उपयोग करके एक सेट के सभी सबसेट (उपसमुच्चय) उत्पन्न करता है। यह विधि 0 से 2^n - 1 तक बाइनरी नंबर गिनती करती है, जहां प्रत्येक बाइनरी नंबर एक सबसेट को दर्शाता है।

एल्गोरिदम

शुरुआत
  1. ऐरे तत्व इनपुट लें।
  2. फंक्शन BinaryCounting():
     - सबसेट की संख्या कैलकुलेट करें: r = pow(2, n) जहां n = तत्वों की संख्या
     - 0 से r-1 तक बाइनरी नंबर जनरेट करें
     - n कैरेक्टर के प्रत्येक बाइनरी स्ट्रिंग के लिए solution() कॉल करें
समाप्ति

उदाहरण कोड

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

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

int BinaryCounting(int a[], int n) {
    int r, i, l;
    char bin[32] = {0};  // पर्याप्त बड़ा बफर
    r = pow(2, n);
    
    // बाइनरी नंबर 0 से r-1 तक जनरेट करें
    for (i = 0; i < r; i++) {
        solution(bin, a, n);
        l = n - 1;
        h:
        if (bin[l] == '0')
            bin[l] = '1';
        else {
            bin[l] = '0';
            l--;
            goto h;
        }
    }
    return 0;
}

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 subsets in the binary counting method: \n";
    BinaryCounting(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 subsets in the binary counting method:
{ }
{ 1 }
{ 2 }
{ 2 1 }
{ 3 }
{ 3 1 }
{ 3 2 }
{ 3 2 1 }
{ 4 }
{ 4 1 }
{ 4 2 }
{ 4 2 1 }
{ 4 3 }
{ 4 3 1 }
{ 4 3 2 }
{ 4 3 2 1 }

व्याख्या: 4 तत्वों के लिए 2^4 = 16 सबसेट हैं (खाली सेट सहित)। बाइनरी काउंटिंग में:

  • 0000 → खाली सेट { }
  • 0001 → { 1 }
  • 0010 → { 2 }
  • 0011 → { 2, 1 }
  • ...
  • 1111 → { 4, 3, 2, 1 }
प्रत्येक बिट स्थिति एक तत्व से मेल खाती है (LSB पहला तत्व)।

  1. C++ STL में Set_Union का कार्यान्वयन C++ STL में Set_Union का कार्यान्वयन

    दो सेट का यूनियन उन तत्वों द्वारा बनाया जाता है जो या तो एक सेट में मौजूद होते हैं, या दोनों में। दूसरे सेट के वे तत्व जिनका पहला सेट में समान तत्व होता है, परिणाम सेट में कॉपी नहीं किए जाते। सामान्य सेट ऑपरेशन हैं: Set Union Set Intersection Symmetric Set Difference या Exclusive-OR Set Difference

  1. C++ STL में Set_Intersection का कार्यान्वयन C++ STL में Set_Intersection का कार्यान्वयन

    दो सेट का इंटरसेक्शन केवल उन तत्वों द्वारा बनता है जो दोनों सेट में कॉमन होते हैं। फंक्शन द्वारा कॉपी किए गए तत्व हमेशा पहले सेट से उसी क्रम में आते हैं। दोनों सेट में तत्व पहले से क्रमबद्ध होने चाहिए। सामान्य सेट ऑपरेशन हैं: Set Union Set Intersection Symmetric Set Difference या Exclusive-OR Set

  1. C++ STL में Set_Difference का कार्यान्वयन C++ STL में Set_Difference का कार्यान्वयन

    दो सेट का डिफरेंस केवल उन तत्वों द्वारा बनता है जो पहले सेट में मौजूद होते हैं, दूसरे सेट में नहीं। फंक्शन द्वारा कॉपी किए गए तत्व हमेशा पहले सेट से उसी क्रम में आते हैं। दोनों सेट में तत्व पहले से क्रमबद्ध होने चाहिए। सामान्य सेट ऑपरेशन हैं: Set Union Set Intersection Symmetric Set Difference या