Website Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commiteee704529b63d39baee5429049854f6c3b2d951b (patch)
Author
 Angel Dimitriev <achi_d@abv.bg>
2022-01-12 19:46:57 +0200
Committer
 GitHub <noreply@github.com>
2022-01-12 19:46:57 +0200
Files158add461fd62bc5a70ecfab9ad2e55ff114835e
Introduction_to_programming_FMI-eee704529b63d39baee5429049854f6c3b2d951b.tar
Introduction_to_programming_FMI-eee704529b63d39baee5429049854f6c3b2d951b.tar.gz
Introduction_to_programming_FMI-eee704529b63d39baee5429049854f6c3b2d951b.zip
Parent714105f84d209503820c015af27d72099dbfa263 (diff)
Create subsets_rec.cpp
1 files changed, 42 insertions, 0 deletions
-rw-r--r--Sem. 13/subsets_rec.cpp42
diff --git a/Sem. 13/subsets_rec.cpp b/Sem. 13/subsets_rec.cpp
new file mode 100644
index 0000000..684b60c
--- /dev/null
+++ b/Sem. 13/subsets_rec.cpp
@@ -0,0 +1,42 @@
+#include <iostream>
+
+
+void printSet(const int* set, const bool* bitString, size_t size)
+{
+ std::cout << "{ ";
+
+ for (int i = 0; i < size; i++)
+ {
+ if (bitString[i])
+ std::cout << set[i] << " " ;
+ }
+ std::cout << "}" << std::endl;
+}
+void genAllBitstringsAndPrintSubset(bool* bitString, size_t size, size_t currentPos, const int* set)
+{
+ if (currentPos == size)
+ {
+ printSet(set, bitString, size);
+ return;
+ }
+ bitString[currentPos] = 0;
+ genAllBitstringsAndPrintSubset(bitString, size, currentPos + 1, set);
+
+ bitString[currentPos] = 1;
+ genAllBitstringsAndPrintSubset(bitString, size, currentPos + 1, set);
+}
+void printSubsets(const int* set, size_t size)
+{
+ bool* bitString = new bool[size];
+ genAllBitstringsAndPrintSubset(bitString, size, 0, set);
+ delete[] bitString;
+}
+
+
+int main()
+{
+ const size_t SIZE = 4;
+ int arr[SIZE] = { 1, 2, 3, 4 };
+
+ printSubsets(arr, 4);
+}