From eee704529b63d39baee5429049854f6c3b2d951b Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Wed, 12 Jan 2022 19:46:57 +0200 Subject: Create subsets_rec.cpp --- Sem. 13/subsets_rec.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Sem. 13/subsets_rec.cpp 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 + + +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); +} -- cgit v1.3.1-23-gd82d