Website Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit5a477ea2fc4926165113b73754d856f6b3d7cfba (patch)
Author
 Stoycho Kyosev <stoycho.kk@gmail.com>
2024-11-03 08:35:57 -0500
Committer
 Stoycho Kyosev <stoycho.kk@gmail.com>
2024-11-03 08:35:57 -0500
Files00f085e7b12202c8711f050811865f9a621e4817
Data-structures-and-algorithms-5a477ea2fc4926165113b73754d856f6b3d7cfba.tar
Data-structures-and-algorithms-5a477ea2fc4926165113b73754d856f6b3d7cfba.tar.gz
Data-structures-and-algorithms-5a477ea2fc4926165113b73754d856f6b3d7cfba.zip
Parent8940baabe138d9db0b1a744d4b5e0acd5936ab37 (diff)
Add all boolean vectors generation
1 files changed, 52 insertions, 0 deletions
-rw-r--r--Seminar03/src/amortized-analysis/all-boolean-vectors.cpp52
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 <iostream>
+#include <vector>
+
+void next_iterators(std::vector<int>& number)
+{
+ auto it = number.rbegin();
+ while(it != number.rend() && *it == 1)
+ {
+ *it = 0;
+ ++it;
+ }
+ if (it != number.rend())
+ *it = 1;
+}
+
+void next(std::vector<int>& 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<int>& 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<int> 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