From 5a477ea2fc4926165113b73754d856f6b3d7cfba Mon Sep 17 00:00:00 2001 From: Stoycho Kyosev Date: Sun, 3 Nov 2024 08:35:57 -0500 Subject: Add all boolean vectors generation --- .../src/amortized-analysis/all-boolean-vectors.cpp | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Seminar03/src/amortized-analysis/all-boolean-vectors.cpp diff --git a/Seminar03/src/amortized-analysis/all-boolean-vectors.cpp b/Seminar03/src/amortized-analysis/all-boolean-vectors.cpp new file mode 100644 index 0000000..8524a21 --- /dev/null +++ b/Seminar03/src/amortized-analysis/all-boolean-vectors.cpp @@ -0,0 +1,52 @@ +#include +#include + +void next_iterators(std::vector& number) +{ + auto it = number.rbegin(); + while(it != number.rend() && *it == 1) + { + *it = 0; + ++it; + } + if (it != number.rend()) + *it = 1; +} + +void next(std::vector& number) +{ + int idx = number.size() - 1; + + while (idx >= 0 && number[idx] == 1) + number[idx--] = 0; + + if (idx >= 0) + number[idx] = 1; +} + +void print(const std::vector& number) +{ + std::cout << "[ "; + for(auto it = number.begin(); it != number.end(); ++it) + { + std::cout << *it << " "; + } + std::cout << "]" << std::endl; +} + +void generate_boolean_vectors(unsigned n) +{ + std::vector number(n, 0); + size_t count = 1 << n; + + for (size_t i = 0; i < count; i++) + { + print(number); + next(number); + } +} + +int main() +{ + generate_boolean_vectors(3); +} \ No newline at end of file -- cgit v1.3.1-23-gd82d