এটি একটি C++ প্রোগ্রাম যা সব সাবসেট জোড়া জেনারেট করে যাদের ইউনিয়ন(full union) মূল সেট তৈরি করে।
অ্যালগরিদম
শুরু
ফাংশন UnionSet():
আর্গুমেন্ট:
a[] = একটি অ্যারে।
n = এলিমেন্ট সংখ্যা।
ফাংশনের বডি:
1) 0 থেকে 2^(n-1)-1 পর্যন্ত বাইনারি কোড জেনারেট করুন সব 2^(n-1) জোড়ার জন্য।
2) প্রতিটি কোডের জন্য কোড স্ট্রিং-এ 0 বা 1 থাকা সংশ্লিষ্ট ইনডেক্সের অ্যারে এলিমেন্ট প্রিন্ট করুন।
3) সেগুলো আলাদা সেটে প্রিন্ট করুন যারা ইউনিয়ন করলে সুপার সেট তৈরি করে।
শেষ
উদাহরণ
#include <iostream>
#include <math.h>
#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 << "}";
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 }