From 714105f84d209503820c015af27d72099dbfa263 Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Wed, 12 Jan 2022 19:46:20 +0200 Subject: Create subsets_iter.cpp --- Sem. 13/subsets_iter.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Sem. 13/subsets_iter.cpp (limited to 'Sem. 13/subsets_iter.cpp') diff --git a/Sem. 13/subsets_iter.cpp b/Sem. 13/subsets_iter.cpp new file mode 100644 index 0000000..dfad15e --- /dev/null +++ b/Sem. 13/subsets_iter.cpp @@ -0,0 +1,39 @@ +#include + +bool getIsOne(size_t number, size_t index) +{ + return ((1 << index) & number) != 0; +} + +void printSubsetsIter(const int* set, size_t size, size_t bitString) +{ + std::cout << "{ "; + + for (unsigned i = 0; i < size; i++) + { + if (getIsOne(bitString, size - 1 - i)) + std::cout << set[i] << " "; + } + + std::cout << " }" << std::endl; + +} + +void genAllSubsets(const int* set, size_t size) +{ + size_t count = 1 << size; /// 2^size + + for (size_t i = 0; i < count; i++) + { + printSubsetsIter(set, size, i); + } +} + + +int main() +{ + const size_t SIZE = 4; + int arr[SIZE] = { 1, 2, 3, 4 }; + + genAllSubsets(arr, 4); +} -- cgit v1.3.1-23-gd82d