diff options
Create subsets_iter.cpp
1 files changed, 39 insertions, 0 deletions
| -rw-r--r-- | Sem. 13/subsets_iter.cpp | 39 |
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 <iostream> + +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); +} |
