Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 13 / subsets_iter.cpp
diff options
context:
space:
mode:
Commit714105f84d209503820c015af27d72099dbfa263 (patch)
Author
 Angel Dimitriev <achi_d@abv.bg>
2022-01-12 19:46:20 +0200
Committer
 GitHub <noreply@github.com>
2022-01-12 19:46:20 +0200
Filesa642269942af9245bf19c4f6aea27c78d25b26af /Sem. 13/subsets_iter.cpp
Introduction_to_programming_FMI-714105f84d209503820c015af27d72099dbfa263.tar
Introduction_to_programming_FMI-714105f84d209503820c015af27d72099dbfa263.tar.gz
Introduction_to_programming_FMI-714105f84d209503820c015af27d72099dbfa263.zip
Parent6df99b41c9b3fdc7b4e1ccc08ea8faffff39f67d (diff)
Create subsets_iter.cpp
1 files changed, 39 insertions, 0 deletions
-rw-r--r--Sem. 13/subsets_iter.cpp39
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);
+}